HTTP 500尝试使用Java发布时出错
问题描述:
我正在尝试POST到服务器,并在获取响应时收到HTTP 500错误。我已经检查过,以确保我的参数格式正确。如果有人能告诉我为什么我的代码无法正常工作,我将不胜感激!HTTP 500尝试使用Java发布时出错
String params = URLEncoder.encode(query, "UTF-8");
postConnection.setDoOutput(true);
postConnection.setRequestProperty("Accept-Charset", "UTF-8");
OutputStream output = postConnection.getOutputStream();
output.write(params.getBytes("UTF-8"));
output.flush();
output.close();
InputStream postResponse = postConnection.getInputStream(); //error happens here
int inputByte = postResponse.read();
while (inputByte != -1){
postResponseRawJSON += (char)inputByte;
inputByte = postResponse.read();
}
答
请勿对您的查询字符串进行urlencode编码。
UPDATE
在POST消息,该请求的主体的形式为:
name1=value1&name2=value2...
如果编码整个查询行, '=' S和'&的意志被转义,服务器将无法检索参数。
您的某些参数值可能需要进行编码;但是您必须单独编码它们:
String params = "param1=" + URLEncoder.encode(value1, "UTF-8")
+ "¶m2=" + URLEncoder.encode(value2, "UTF-8")
...