2015-06-20 21 views
0

我有一個PHP腳本,只有當Android傳遞值時纔會給出JSON結果。例如if(isset($_POST["storeName"]))。它要求Android將storeName的值發送到PHP腳本,只有腳本將返回JSON結果。 JSON結果的從Android的PHP腳本的POST值,並在Android中顯示JSON結果

String abc = "abc"; 

例子是這樣的:

{"storelist":[{"DESCRIPTION":"1. Mango Magic \r\n2. All Berry Bang\r\n3. Strawberry Juice\r\n4. Banana Buzz"}]} 

所有我想要的是從上面的JSON得到DESCRIPTION。 這裏的問題是,我應該如何將Android的abc的值傳遞給PHP並獲取JSON結果並將其存儲在Android變量中?

回答

0

這是您的JSONparser類

public class JSONParser { 

    static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 

    // constructor 
    public JSONParser() { 

    } 

    // function get json from url 
    // by making HTTP POST or GET method 
    public JSONObject makeHttpRequest(String url, String method, 
             List<NameValuePair> params) { 

     // Making HTTP request 
     try { 

      // check for request method 
      if(method == "POST"){ 
       // request method is POST 
       // defaultHttpClient 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(url); 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 
       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 

      }else if(method == "GET"){ 
       // request method is GET 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       String paramString = URLEncodedUtils.format(params, "utf-8"); 
       url += "?" + paramString; 
       HttpGet httpGet = new HttpGet(url); 

       HttpResponse httpResponse = httpClient.execute(httpGet); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 
      } 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 

     // try parse the string to a JSON object 
     try { 
      jObj = new JSONObject(json); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON String 
     return jObj; 

    } 

在做連接的AsyncTask,在doinbackground方法

@Override 
    protected String doInBackground(String... strings) { 
     String query = "abc"; 
     JSONParser jsonParser = new JSONParser(); 

     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("query", query)); 

     json = jsonParser.makeHttpRequest(url_get_providers, 
       "POST", params); 
     return json.toString(); 
    } 
+0

我如何 「描述」 存儲到Android的變量? – VGG123

+0

在你Activity類中, 字符串描述; 在asinctask的postexecute方法中, @Override protected void onPostExecute(String s){ desc = s; } –

相關問題