我使用Volley将其包含在gradle依赖中
compile 'com.android.volley:volley:1.0.0'
现在我发布了一个像这样的字符串
word = "{\"question\":\""+answer+"\", \"option\":\""+choice+"\"}";
在请求参数中
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("word", word);
params.put("uid", String.valueOf(user_id));
return params;
}
这对我有20天没有任何投诉。但突然从昨天用户发布空字符串。我在php中检查$_POST['word']
确实是空的。我认为用户可能会在输入中输入双引号,但事实并非如此,因为我使用没有双引号的输入进行测试。我使用 AsyncHttpResponseHandler 通过编译compile 'com.loopj.android:android-async-http:1.4.9'
发布了相同的字符串有用。这令我困惑。一个图书馆如何工作几天并突然停止工作同样的输入。
已解决问题
问题是这样的:如果我收到帖子只是$word = $_POST['word'];
我得到一个有效的Json对象,如果我收到$word = $mysqli->real_escape_string($_POST['word']);
我得到带有转义字符的无效Json对象。在问题是他的网络连接问题时,我已经根据用户的投诉修改了代码。
答案 0 :(得分:0)
我是新手,但我会尽力帮助。 你可以通过添加
来使用“okhttp”http://square.github.io/okhttp/compile 'com.squareup.okhttp3:okhttp:3.6.0'
在gradle中并使用此代码
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("word", word)
.addFormDataPart("uid", String.valueOf(user_id))
.build();
Request request = new Request.Builder()
.url("https://yourwebsite.com/post.php")
.post(requestBody)
.build();
Response response = client.newCall(request).execute();
并记得在AsyncTask中使用它, 希望它有所帮助