2017-08-22 1 views
0

J'ai un site Web fonctionnant avec woocommerce et j'essaye de récupérer les produits par l'intermédiaire d'une demande d'obtention de HTTP. Lorsque j'essaie l'url sur le facteur ou sur mon navigateur, tout fonctionne très bien. Cependant, sur mon application Android, je ne reçois aucun résultat.envoyer http demande GET mais ne recevant aucun résultat

Quelqu'un ne se trompe pas?

Voici mon code:

 JSONObject json = jsonParser.httpRequest(url,"GET",params); 

public JSONObject httpRequest(String url, String method, ArrayList<Pair<String,String>> params) throws SocketTimeoutException{ 
    String response = ""; 

    try { 
     URL url_o = new URL(url); 
     this.connection = (HttpURLConnection) url_o.openConnection(); 
     connection.setRequestMethod(method); 
     connection.setDoOutput(true); 
     connection.setDoInput(true); 
     connection.setConnectTimeout(5000); 

     Uri.Builder builder = new Uri.Builder(); 
     for (int i = 0; i < params.size(); i++) { 
      builder.appendQueryParameter(params.get(i).first, params.get(i).second); 
     } 
     String query = builder.build().getEncodedQuery(); 

     if(query!=null){ 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream())); 
      bufferedWriter.write(query); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
     } 

     connection.connect(); 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     if(e.getMessage().equals("connect timed out")) 
      throw new SocketTimeoutException(); 
     else 
      e.printStackTrace(); 
    } 

    try{ 
     int responseCode = connection.getResponseCode(); 
     if(responseCode == HttpURLConnection.HTTP_OK){ 
      StringBuilder stringBuilder = new StringBuilder(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

      String line = null; 
      while((line = bufferedReader.readLine())!=null){ 
       stringBuilder.append(line+"\n"); 
      } 
      bufferedReader.close(); 

      response = stringBuilder.toString(); 

      connection.disconnect(); 
     } 

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

    try{ 
     json = new JSONObject(response); 
    } 
    catch(JSONException e){ 
     e.printStackTrace(); 
    } 

    return json; 
} 

Sachant que l'URL a été construit par postier avec la clé et le code secret et d'autres paramètres.

Le httpRequest fonctionne très bien car je l'ai utilisé plusieurs fois pour obtenir des résultats de scripts php.

À la fin de la fonction httRequest, la réponse var est vide.

Merci de votre aide.

+0

aucune exception dans logcat? Qu'est-ce qu'il y a dans la variable responseCode? –

+0

@an_droid_dev Aucune exception sauf exception JSONException à la fin de la fonction en raison d'une chaîne de réponse emty lors de la création de JSONObject. Et la variable responseCode est 200 – OTmn

+1

Eh bien, essayez de supprimer doOutput des demandes GET, ceux-ci sont destinés à POST –

Répondre

0

Supprimer doOutput de requêtes GET, ceux-ci sont destinés à POST