2013-04-28 1 views
0

Это мой код. Я пытаюсь сделать пост на Апи отдыха от андроида (API 10)Ошибка в HttpPost.addheader в режиме покоя api call for 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(); 

    } 

Я просто не знаю, что добавить (в качестве первой строки) в последнем методе AddHeader! Я попробовал «имя», «идентификатор» и т. Д. Его тоже не указано в API. Документация API находится здесь: http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html Я попытался использовать firebug, чтобы увидеть запрос на отправку в браузере, но он говорит, что данные post = «PPP2R1A, CEP192, AKAP9, CENPJ, CEP290, DYNC1H1».

Прямо сейчас я использую «тело» там, и я получаю json respnse длиной 0. Но если я попробую браузер из ссылки на документацию, я получаю ответ json. поэтому ошибка находится в части addHeader.

ответ

0

Проблема заключается в том, что данные должны быть частью заголовка, потому что это не должно. Если я запускаю запрос выборки из API через случайный Webproxy, я могу увидеть следующие заголовки:

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 

Другими словами: ни один из "PPP2R1A,CEP192,AKAP9,CENPJ,CEP290,DYNC1H1" строк не существует. Вместо этого эти данные являются частью тела сообщения или «сущности», которую вы можете установить для метода post.

Нечто подобное, вероятно, следует сделать это:

// 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

Спасибо за помощь! Извините за поздний ответ, но у меня были некоторые проблемы. Спасибо. Большое спасибо! :) – blueFroggy

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