我使用 POST 请求和参数创建了 HttpURLConnection 以发送到服务器。服务器响应:
Integrity constraint violation: Column 'operator_id' cannot be null
但是我在查询中明明发了。我尝试通过终端使用 curl,它工作正常。服务器接受查询并将其保存到数据库。我匹配了 curl 和 Android 调用中的所有参数值,但没有帮助。
这是 AsyncTask 类。
public class HttpPost extends AsyncTask<String, String, String> {
Context context;
public HttpPost (Context context){
this.context = context;
}
@Override
protected String doInBackground(String... params) {
URL url;
String response = "";
try {
url = new URL(params[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
String query = "operator_id=1&date=*********";
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();
.......
conn.disconnect();
catch ( Exception e){
e.printStackTrace();
}
return response;
}
这是 curl 调用
curl -H "Content-Type: application/json" -X POST -d '{"operator_id":1,"date":"",other value...}' https://www.mywebsite.com/
有人知道我做错了什么吗?
最佳答案
尝试将字符串参数包装在有效的 JSON 中应该可行。
String query = "{\"operator_id\":1,\"date\":\"*********\"}";
关于android - HttpURLConnection POST 参数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077084/