2016-09-09 3 views
0

, когда я печатаю адрес в браузере я получить правильный ответОтвет приходит отличается в различных андроид приложений

[{"responseCode":0},{"rewardPoints":-15000,"receipt":"20160909110957"}] , 

, но когда я пытаюсь получить ответ через андроида я получить ответ как

[{"responseCode":111}] , 

я я пытаюсь получить ответ вроде этого

class Transid extends AsyncTask<String, String, String> { 

    ProgressDialog pdia; 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pdia = new ProgressDialog(PopupActivity.this); 
     pdia.setMessage("Loading..."); 
     pdia.show(); 
    } 
    @Override 
    protected String doInBackground(String... params) { 
     HttpURLConnection connection = null; 
     try { 
      URL url = new URL(params[0]); 
      connection = (HttpURLConnection) url.openConnection(); 

      connection.setRequestMethod("GET"); 
      connection.setReadTimeout(10000 /* milliseconds */); 
      connection.setConnectTimeout(15000 /* milliseconds */); 

      connection.setDoOutput(true); 
      connection.connect(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); 

      char[] buffer = new char[1024]; 

      String jsonString = new String(); 

      StringBuilder sb = new StringBuilder(); 
      String line; 
      while ((line = br.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      br.close(); 

      jsonString = sb.toString(); 
      System.out.println(jsonString); 
      JSONArray parentarray = new JSONArray(jsonString); 
      JSONObject finalobject = parentarray.getJSONObject(1); 
      transactionid = finalobject.getString("receipt"); 

      setTransactionid(transactionid); 
      return ("" + transactionid); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } finally { 
      if (connection != null) { 
       connection.disconnect(); 
      } 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 


     return transactionid; 
    } 


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

Я использую тот же код в другом приложении, и он отлично работает

Почему я получаю отклик в этом приложении?

ответ

1

См рабочий код below.It испытан и работает правильно

@Override 
    protected String doInBackground(String... strings) { 
     URL url; 
     HttpURLConnection urlConnection = null; 
     try { 
      url=new URL("url?userId=4&points=15000&ipaddress=yourip"); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setDoOutput(true); 
      urlConnection.setDoInput(true); 
      urlConnection.setRequestProperty("Content-Type", "application/json"); 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.connect(); 

      int responseCode = urlConnection.getResponseCode(); 

      if(responseCode == HttpURLConnection.HTTP_OK){ 
       String server_response = readStream(urlConnection.getInputStream()); 
       Log.v("Yorclass.this.getClass().getName()",server_response); 
      } 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 


public String readStream(InputStream in) { 
     BufferedReader reader = null; 
     StringBuffer response = new StringBuffer(); 
     try { 
      reader = new BufferedReader(new InputStreamReader(in)); 
      String line = ""; 
      while ((line = reader.readLine()) != null) { 
       response.append(line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return response.toString(); 
    } 

Выход

[{ "responseCode": 0}, { "rewardPoints": - 15000,» получение ":" 20160909110957 "}]

+0

Спасибо, сработало :) – Redman

+0

Пожалуйста, удалите URL-адрес из ответа, я не могу его изменить, иначе мне, возможно, придется удалить вопрос, это обойдется вам в 25 rep. – Redman

+0

Возможно, вы должны объяснить, что не так с исходным кодом и как этот ответ исправляет его. – TripeHound

Смежные вопросы