我正在向Content-Type
设置为application/x-www-form-urlencoded
的服务器发出POST请求。其中一个查询参数有一个值,其中包含&
。在发送请求之前,我将&
替换为&
。
当我使用POSTMAN (Chrome扩展)发送这个请求时,请求就会很好,我会收到预期的响应。但是,当我使用Java应用程序发送此请求时,服务器会抛出一个错误(无法解析文档)。下面是我用来发送请求的代码:
URL url = new URL(url); // url => "http://myserver.com/api/update"
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(60000);
urlConnection.setReadTimeout(60000);
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput(true);
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
PrintWriter printWriter = new PrintWriter(urlConnection.getOutputStream());
printWriter.print(params); // params => api_key=abcd123&update_data_id=123&update_data_value=Test&Value
printWriter.flush();
InputStream inputStream = urlConnection.getInputStream();
String contentType = urlConnection.getContentType();
FileUtil.closeWriter(printWriter);
// Parse response ...
在这里,问题发生在参数update_data_value
中。如果我删除了&
,那么无论是邮递员还是我的应用程序,请求都会变得很好。但是当&
出现时,只有通过邮递员的请求才能正常工作。
有什么不对的?
非常感谢你的帮助!
发布于 2014-07-28 10:58:30
在聊了很长时间之后,问题是:
它是关于一个XML字符串的,其中使用了一个符号。根据,该符号需要替换为"&“。
这个XML字符串需要在POST请求中发送,因此需要转义符号和分号。
最后的替换字符串如下:“%26 The %3B”。
https://stackoverflow.com/questions/24991804
复制相似问题