Android如何使用参数调用Web服务并获取json数组作为响应

时间:2014-09-23 07:20:43

标签: android json

我正在尝试在android.c中实现分页。我有一个返回jsonarray的服务。

protected JSONArray doInBackground(String... params) {

    JSONArray jsonArray = null; 
    String result = ServerConnect.readService("http://myservice.com/resbook_redberry/mobile/GetKitchenOrder");

    try {
        jsonArray = new JSONArray(result);
    } catch (Exception e) {
        e.printStackTrace();
        try {
            jsonArray = new JSONArray(result.substring(3));
        } catch (JSONException e1) {
            e1.printStackTrace();
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }
    return jsonArray;
}

但现在我需要将网页号发送到网络服务并获得JSONArray作为回复。


我是否需要撰写HTTP帖子?我应该改变什么才能实现这一目标?

1 个答案:

答案 0 :(得分:3)

Try this: here i am using gson library to parse json : https://code.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.4-release.zip&can=1&q=

**With GET Method**

    protected SignUpResponseJson doInBackground(String... params) {

        urlString = "http://www.xxxxx.com?page=1"
        url  =  new URL(urlString);

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setUseCaches(false);
        connection.setConnectTimeout(Integer.parseInt(context.getResources().getString(R.string.timeout))); //set timeout to 5 seconds
        connection.setReadTimeout(Integer.parseInt(context.getResources().getString(R.string.timeout))); //set timeout to 5 seconds

        connection.connect();

        HttpURLConnection httpConnection  =  (HttpURLConnection) connection;
        int responseCode  =  httpConnection.getResponseCode();
        //      Log.i("test-responsecode",String.valueOf(responseCode));
        if (responseCode   ==   HttpURLConnection.HTTP_OK) {
            //          Log.i("test","inside if");
            InputStream in  =  httpConnection.getInputStream();
            Gson gson  =  new Gson();
            Reader r  =  new InputStreamReader(in);

            Type DataType  =  new TypeToken<SignUpResponseJson>() {
            }.getType();

            signUpResponseJsons  =  gson.fromJson(r,DataType);
            Log.i(TAG, gson.toJson(signUpResponseJsons).toString());

        }

    }

或使用后置方法

http://fahmirahman.wordpress.com/2011/04/26/the-simplest-way-to-post-parameters-between-android-and-php/

public void postData(){  
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.yourdomain.com/post.php");  

        try {
            // Add your data
            List nameValuePairs = new ArrayList(1);
            nameValuePairs.add(new BasicNameValuePair("data1", "dataValue"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);

            InputStream is = response.getEntity().getContent();

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    }
}