2013-04-28 2 views
0

Ceci est mon code. Je suis en train de faire un post sur le reste d'Android Api (API 10)Erreur dans HttpPost.addheader dans l'appel de repos api pour android

 HttpPost httpPost = new HttpPost(
        "http://www.reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/RESTfulWS/queryHitPathways"); 

     httpPost.addHeader("Accept", "application/json"); 
     httpPost.addHeader("Content-Type"," text/plain; charset=UTF-8"); 
     httpPost.addHeader("","PPP2R1A,CEP192,AKAP9,CENPJ,CEP290,DYNC1H1"); 
        try { 
      HttpResponse response = client.execute(httpPost); 
      StatusLine statusLine = response.getStatusLine(); 
      int statusCode = statusLine.getStatusCode(); 
      if (statusCode == 200) { 
       HttpEntity entity = response.getEntity(); 
       InputStream content = entity.getContent(); 
       BufferedReader reader = new BufferedReader(
         new InputStreamReader(content)); 
       String line; 
       while ((line = reader.readLine()) != null) { 
        builder.append(line); 
       } 
      } else { 
       System.out.println(statusCode); 
       Log.e(Gsearch.class.toString(), "Failed to download file"); 
      } 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return builder.toString(); 

    } 

Je ne sais pas quoi ajouter (comme la première chaîne) dans la dernière méthode addHeader! J'ai essayé "nom", "ID" etc. Il n'est pas listé dans l'API aussi. La documentation de l'API est ici: http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html J'ai essayé d'utiliser firebug pour voir la demande de publication dans le navigateur mais il est écrit "post data =" PPP2R1A, CEP192, AKAP9, CENPJ, CEP290, DYNC1H1 ".

En ce moment j'utilise "body" dedans et j'obtiens un json respnse de longueur 0. Mais si j'essaye sur le navigateur du lien de documentation, j'obtiens une réponse de json. l'erreur est donc dans la partie addHeader.

Répondre

0

Le problème est que vous supposez que les données doivent faire partie de l'en-tête, car cela ne devrait pas être le cas. Si je lance la demande d'échantillon de l'API par un WebProxy aléatoire, je peux voir les en-têtes suivants:

POST   /ReactomeRESTfulAPI/RESTfulWS/queryHitPathways HTTP/1.1 
Host   reactomews.oicr.on.ca:8080 
Content-Length 41 
Accept   application/json 
Origin   http://reactomews.oicr.on.ca:8080 
User-Agent  Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31 
Content-type text/plain 
Referer   http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html 
Accept-Encoding gzip,deflate,sdch 
Accept-Language nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3 

En d'autres termes: aucune des chaînes "PPP2R1A,CEP192,AKAP9,CENPJ,CEP290,DYNC1H1" sont là. Au lieu de cela, ces données font partie du corps du message, ou l''entité' que vous pouvez définir pour la méthode post.

Quelque chose comme cela devrait probablement le faire:

// creating of HttpPost omitted 
httpPost.addHeader("Accept", "application/json"); 
httpPost.addHeader("Content-Type"," text/plain; charset=UTF-8"); 
StringEntity entity = new StringEntity("PPP2R1A,CEP192,AKAP9,CENPJ,CEP290,DYNC1H1"); 
httpPost.setEntity(entity); 
// execute post and get result etc. 
+0

Merci pour toute l'aide! Désolé pour la réponse tardive mais j'ai eu quelques problèmes. Ouf .. Merci beaucoup! :) – blueFroggy