在java中,如何使用x-www-form-urlencoded头发送请求
。我不明白如何发送带有键值的正文,如上面的屏幕截图所示。
我尝试过以下代码:
String urlParameters =
cafedra_name+ data_to_send;
URL url;
HttpURLConnection connection = null;
try {
//Create connection
url = new URL(targetURL);
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" +
Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream ());
wr.writeBytes (urlParameters);
wr.flush ();
wr.close ();
但是在回复中,我没有收到正确的数据。
string urlParameters = "param1=value1¶m2=value2";
string _endPointName = "your url post api";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(_endPointName);
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.Method = "POST";
httpWebRequest.Headers["ContentType"] = "application/x-www-form-urlencoded";
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
(se, cert, chain, sslerror) =>
{
return true;
};
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(urlParameters);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
对于HttpEntity
,以下答案有效
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("email", "first.last@example.com");
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
ResponseEntity<String> response = restTemplate.postForEntity( url, request , String.class );
参考:如何使用Spring RestTemplate发布表单数据?
当您将application/x-www-form-urlencoded
设置为内容类型时,发送的数据必须与此格式相同。
String urlParameters = "param1=data1¶m2=data2¶m3=data3";
现在发送部分非常简单。
byte[] postData = urlParameters.getBytes( StandardCharsets.UTF_8 );
int postDataLength = postData.length;
String request = "<Url here>";
URL url = new URL( request );
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setInstanceFollowRedirects(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("charset", "utf-8");
conn.setRequestProperty("Content-Length", Integer.toString(postDataLength ));
conn.setUseCaches(false);
try(DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
wr.write( postData );
}
或者您可以创建一个通用方法来构建应用程序/x-www-form-urlencoded
所需的键值模式。
private String getDataString(HashMap<String, String> params) throws UnsupportedEncodingException{
StringBuilder result = new StringBuilder();
boolean first = true;
for(Map.Entry<String, String> entry : params.entrySet()){
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
return result.toString();
}
我已经通过邮递员发送了标题Content-Type=Application/x-www-form-urlencoded的POST请求。 我得到了PHP中的数组,格式如下。我无法在PHP页面中访问。我该如何解决这个问题? 结果是
问题内容: 我有一个项目需要使用Angular2(最终版本)发布到旧的,旧的Tomcat 7服务器,该服务器使用.jsp页面提供某种类似于REST的API。 当项目只是一个执行AJAX请求的简单JQuery应用程序时,此方法就可以很好地工作。但是,该项目的范围已经扩大,因此需要使用更现代的框架来重写它。Angular2看起来很适合这项工作,但有一个例外:它拒绝使用任何选项来执行POST请求,但要使
它回来了 对此有什么建议吗?内容类型应为application/x-www-form-urlencoded。
我有一个api要求在标题中发送以下参数- 内容类型-应用程序/x-www. form-urlencoded AuthKey-(会话令牌) 以及正文中的以下参数(表单日,即键值对) storeId-1 类型-产品 类别ID-324 但是每当我点击这个api,我总是得到401(未授权)错误。我已经尝试使用MultipartRequest正文和formBody,我知道这与正文无关(它的头,我需要发送内容
我想使用节点模块请求复制此邮递员呼叫。请参见屏幕截图。 截图 截图2 如屏幕截图所示,在我的请求中,我需要传递一个以及值。我试着按照这篇SO帖子的前两个答案,但没有成功。 我基本上已经试过了 而且 有人能告诉我正确的方法吗? 编辑:澄清:这些请求的结果是400状态。如果我发送,我在Postman上也会得到400,但是如果我发送,那么它在postman上就会成功。我不知道如何根据要求做这件事。
我正处于使用Pug制作第一个JS Web应用程序的最后一步,我需要测试它是否支持POST方法,该方法接收字符串并返回一个带2键的JSON对象。表示原始字符串及其长度的值对。 我被指示使用Postman和x-www-form-urlencoded来测试我的应用程序,但我不知道如何使用urlencoded body来测试POST方法。 有人能告诉我在x-www-form-urlencoded下,邮递员