2016-10-02 3 views
0

私はAPIで作業していますが、私は奇妙なことに遭遇しています。 JSONレスポンスを受け取るAPIリクエストを作成するとき。ブラウザでは、次のJSONが表示されます。Androidはサーバーから受信するとJsonArrayの異なるデータを読み込みます

[ 
    { 
     "SalesAgentPhone":"829698539", 
     "DriverStatus":"CustomerRescheduled", 
     "DriverStatusDescription":[ 
     { 
      "Reason":"sfdfsdf", 
      "Date":"2016-10-02", 
      "SlotId":"1" 
     } 
     ] 
    }] 

ただし、Androidデバイスで異なるJSON応答が返されます。

[ 
    { 
     "SalesAgentPhone":"829698539", 
     "DriverStatus":"CustomerRescheduled", 
     "DriverStatusDescription":[ 
     {"Reason":"sfdfsdf","Date":"2016-10-02","SlotId":"1"  
     } 
     ] 
    }] 

これは私がその要求

public class NewPost extends AsyncTask<String, Integer, String> { 
    private final Context context; 
    private final Registerinterface inter; 
    private int response_code = 0; 
    private HashMap<String, String> postDataParams; 
    private ProgressDialog prgDialog; 

    public NewPost(Context c, Registerinterface inter, HashMap<String, String> postParamater) { 
     context = c; 
     this.inter = inter; 
     this.postDataParams = postParamater; 


    } 


    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     if (!new NetworkStatus(context).isNetworkAvailable()) { 
      inter.Result("", Constants.No_Internet); 
      this.cancel(true); 
     } else { 
      prgDialog = new ProgressDialog(new ContextThemeWrapper(context, android.R.style.Theme_DeviceDefault_Light_Dialog)); 
      prgDialog.setMessage("Loading..."); 
      prgDialog.show(); 
      prgDialog.setIndeterminate(false); 
     } 
    } 

    @Override 
    protected String doInBackground(String... param) { 

     URL url; 
     String response = ""; 
     try { 
      url = new URL(param[0]); 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(15000); 
      conn.setConnectTimeout(15000); 
      conn.setRequestMethod("GET"); 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 
      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(
        new OutputStreamWriter(os, "UTF-8")); 
      writer.write(getPostDataString(postDataParams)); 
      writer.flush(); 
      writer.close(); 
      os.close(); 
      int responseCode = conn.getResponseCode(); 
      if (responseCode == HttpsURLConnection.HTTP_OK) { 
       String line; 
       StringBuilder sb = new StringBuilder(); 
       BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       while ((line = br.readLine()) != null) 
        sb.append(line + "\n"); 
       response = sb.toString(); 
       return response; 
      } else { 
       response = ""; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return response; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     prgDialog.dismiss(); 
     if (result == null || result.equals("null")) 
      inter.Result("null", response_code); 
     else 
      inter.Result(result, response_code); 
    } 

    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException { 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 
     for (Map.Entry<String, String> entry : params.entrySet()) { 
      if (first) 
       first = false; 
      else 
       result.append("&"); 

      result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
      result.append("="); 
      result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
     } 
     return result.toString(); 
    } 
} 

作るために使用しているクラスである私は、任意の助けをいただければ幸いです、時間、この問題に引っかかってきました。

答えて

1

JSONデータからJSONデータを削除できます。

JSON.parse(data.replace(/&quot;/g,'"')); 

"はJSONオブジェクトでは有効ではありませんので、あなたは、しかし、あなたのJSON-書き込みスクリプトを修正したい場合があります。

+0

しかし、私はブラウザからリクエストをしているときに適切なデータを受け取ります。 – Harsha

+0

しかし、私は上記の方法を実行することができませんでした。 – Harsha

関連する問題