Java 无法在Android中解决POST请求
我知道人们已经问过很多次这个问题。但它仍然给我带来了困难 在收集了一些地方的代码之后:就像我可以写这个一样 我所做的: 我已经检查了GET请求中代码的工作情况。它起作用了Java 无法在Android中解决POST请求,java,android,api,post,request,Java,Android,Api,Post,Request,我知道人们已经问过很多次这个问题。但它仍然给我带来了困难 在收集了一些地方的代码之后:就像我可以写这个一样 我所做的: 我已经检查了GET请求中代码的工作情况。它起作用了 private class Myworker extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... voids) { try { URL ur
private class Myworker extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
try {
URL url = new URL("myurl");
org.json.JSONObject df = new org.json.JSONObject();
df.put("amount", "50");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
try {
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(df));
writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
bufferedReader.close();
System.out.println("n " + new String(stringBuilder));
}
} finally {
conn.disconnect();
}
} catch (Exception e) {
System.out.println("Unable *******");
e.printStackTrace();
}
return null;
}
}
public String getPostDataString(org.json.JSONObject params) throws Exception {
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator itr = params.keys();
while (itr.hasNext()) {
String key = (String) itr.next();
Object value = params.get(key);
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));
}
return result.toString();
}
}
请帮助415是不受支持的媒体类型,这可能是由于您没有正确设置内容类型标题 尝试添加
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
将来,您可能希望尝试http客户端库,例如apache httpcomponents或google http客户端,因为它们更易于使用 嘿@Deadron谢谢你的回答。。。但它不起作用,同样的错误。。415…从您的评论中得到提示,我还尝试了application/json,它给出了错误400。我还能做什么呢?您不能告诉服务器您正在发送json,并期望它能够解析非json的内容。400是朝着正确方向迈出的一步。它告诉您您的请求正文缺少某些内容或格式不正确。如果您阅读响应正文,可能会有所帮助。没有理想的格式。这取决于服务器接受什么。大多数服务器都接受urlencoded格式,但这并不能保证。没有理想的格式。这取决于服务器接受的内容。--好了,兄弟,。。soilved它…以字节为单位写入参数。。它成功了…:P我不知道为什么。。
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");