Php 从Android发送JSON请求

Php 从Android发送JSON请求,php,android,json,httprequest,gson,Php,Android,Json,Httprequest,Gson,我试图发送一个JSON对象来检索一些数据。JSON对象内部是要从数据库中获取的年份、类型和国家参数。但是服务器似乎没有得到我传递的值 以下是我的Android代码: public HttpResponse makeRequest(String uri, String json) { try { HttpUriRequest request = new HttpGet(uri); request.addHeader("Accept-Encoding", "g

我试图发送一个JSON对象来检索一些数据。JSON对象内部是要从数据库中获取的年份、类型和国家参数。但是服务器似乎没有得到我传递的值

以下是我的Android代码:

public HttpResponse makeRequest(String uri, String json) {
    try {
        HttpUriRequest request = new HttpGet(uri);
        request.addHeader("Accept-Encoding", "gzip");
        request.addHeader("Content-type", "application/json");
        return new DefaultHttpClient().execute(request);
    } catch (UnsupportedEncodingException e) {
        Log.d("tes", e.getMessage());
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        Log.d("tes", e.getMessage());
        e.printStackTrace();
    } catch (IOException e) {
        Log.d("tes", e.getMessage());
        e.printStackTrace();
    } catch(Exception e){
        Log.d("tes", e.getMessage());
        e.printStackTrace();
    }
    return null;
}

@Override
protected JSONArray doInBackground(Void... params) {
    Map<String, String> comment = new HashMap<String, String>();
    comment.put("country", "Indonesia");
    comment.put("year", "2014");
    comment.put("type", "Audax");
    String json = new GsonBuilder().create().toJson(comment, Map.class);
    Log.d("sent json",json);
    try {
        HttpResponse response = makeRequest("http://racehub.me/mobile/native_races", json);

        BufferedReader reader = null;

        InputStream instream = response.getEntity().getContent();
        Header contentEncoding = response.getFirstHeader("Content-Encoding");
        if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {
            instream = new GZIPInputStream(instream);
        }

        reader = new BufferedReader(new InputStreamReader(instream));

        StringBuilder builder = new StringBuilder();
        for (String line = null; (line = reader.readLine()) != null;) {
            builder.append(line).append("\n");
        }
        Log.d("tes", builder.toString());

        JSONTokener tokener = new JSONTokener(builder.toString());
        JSONArray finalResult = new JSONArray(tokener);

        return finalResult;
    } catch (IOException e) {
        Log.d("fail", e.getMessage());
        return null;
    } catch (JSONException e) {
        Log.d("fail", e.getMessage());
        return null;
    } catch(Exception e){
        Log.d("tes", e.getMessage());
        e.printStackTrace();
        return null;
    }
}
下面是接收JSON并从数据库返回结果的PHP

function native_races($f3) {
        $table_series=new DB\SQL\Mapper($f3->get('DB'),'series');

        $country = $f3->clean($f3->get('GET.country'));
        $type = $f3->clean($f3->get('GET.type'));
        $year = $f3->clean($f3->get('GET.year'));

        $races = MainModel::getRaceList($f3, $country, $type, $year);

        echo json_encode($races);
    }

看来我无法使用GET方法发送JSON,最后我使用了普通的GET方法

 String url = "http://racehub.me/mobile/native_races?";

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("country", "all"));
            nameValuePairs.add(new BasicNameValuePair("year", "2014"));
            nameValuePairs.add(new BasicNameValuePair("type", "all"));
            String paramString = URLEncodedUtils.format(nameValuePairs, "utf-8");

            url += paramString; 
            HttpUriRequest request = new HttpGet(url);
            request.addHeader("Accept-Encoding", "gzip");
            request.addHeader("Content-type", "application/json");
            HttpResponse response = new DefaultHttpClient().execute(request);

这是重复的问题,您可以阅读本教程以了解更多[详细信息]和
 String url = "http://racehub.me/mobile/native_races?";

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("country", "all"));
            nameValuePairs.add(new BasicNameValuePair("year", "2014"));
            nameValuePairs.add(new BasicNameValuePair("type", "all"));
            String paramString = URLEncodedUtils.format(nameValuePairs, "utf-8");

            url += paramString; 
            HttpUriRequest request = new HttpGet(url);
            request.addHeader("Accept-Encoding", "gzip");
            request.addHeader("Content-type", "application/json");
            HttpResponse response = new DefaultHttpClient().execute(request);