2014-09-23 86 views
0

我试图在android.c中实现分页。我现在有一个返回jsonarray的服务。Android如何使用参数调用Web服务并获取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; 
} 

,但现在我需要发送的页码到Web服务,并得到JSONArray作为响应。


我需要写HTTP后?为了做到这一点,我应该改变什么?

回答

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()); 

     } 

    } 

或POST方法

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 
     } 
    } 
} 
+0

感谢您的answer..but我需要的是发布页号到服务器,并获得JSON数组根据该请求。在获取json之前,您是否将任何值发布到服务器? – san88 2014-09-23 08:23:05

+0

是的,urlString =“http://www.xxxxx.com?page=1”你可以在url中加入查询字符串 – 2014-09-23 08:26:36

+0

yes..但不幸的是它不接受通过url的参数。有没有选择发送参数给服务器以外的url? – san88 2014-09-23 08:37:17

相关问题