Android Volley将空字符串发布到php

时间:2017-03-28 02:07:10

标签: php android android-volley

我使用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对象。在问题是他的网络连接问题时,我已经根据用户的投诉修改了代码。

1 个答案:

答案 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中使用它, 希望它有所帮助