2017-12-08 9 views
0

GoogleのURL短縮APIを使用しようとしています。Apache HttpClientプロセスHttpResponse

私はのようになります取得応答

:私は「ID」フィールドにアクセスして、短縮URLを取得することができるように

200 

cache-control: no-cache, no-store, max-age=0, must-revalidate 
content-encoding: gzip 
content-length: 106 
content-type: application/json; charset=UTF-8 
date: Thu, 07 Dec 2017 23:39:07 GMT 
etag: "qQqhpr1RL6vGc3-0yacNoUjh_Uc/W5VD-15ZqaQDW9L-OELlMzo1ih4" 
expires: Mon, 01 Jan 1990 00:00:00 GMT 
pragma: no-cache 
server: GSE 
vary: Origin, X-Origin 

{ 
"kind": "urlshortener#url", 
"id": "[SHORTENED URL HERE]", 
"longUrl": "http://www.facebook.com/" 
} 

私はJSONを処理できるようにしたいが、戻りました。誰かが私を得ることができるように「ID」のJSONフィールドへのアクセスを取得する方法を見つけ出すために私を助けることができれば

Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
Pragma: no-cache 
Expires: Mon, 01 Jan 1990 00:00:00 GMT 
Date: Fri, 08 Dec 2017 10:10:37 GMT 
ETag: "qQqhpr1RL6vGc3-0yacNoUjh_Uc/W5VD-15ZqaQDW9L-OELlMzo1ih4" 
Vary: Origin 
Vary: X-Origin 
Content-Type: application/json; charset=UTF-8 
X-Content-Type-Options: nosniff 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1; mode=block 
Server: GSE 
Alt-Svc: hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35" 
Transfer-Encoding: chunked 

私はそれを感謝:応答は私はこのようなルックスを取得していますことをしかし

短縮されたURL

このための私のコードは次のとおりです。

HttpPost httppost = new HttpPost("https://www.googleapis.com/urlshortener/v1/url?key=[MY_API_KEY]); 
String jsondata = "{\"longUrl\": \"http://www.facebook.com/\"}"; 

StringEntity jsonparam = new StringEntity(jsondata); 
jsonparam.setContentType("application/json;charset=utf-8"); 
jsonparam.setChunked(false); 

httppost.addHeader("content-type", "application/json;charset=UTF-8"); 
httppost.setEntity(jsonparam); 

HttpClient httpclient = HttpClientBuilder.create().build(); 
HttpResponse httpresponse = httpclient.execute(httppost); 

Header[] headers = httpresponse.getAllHeaders(); 
for (Header header : headers) { 
    System.out.println(header); 
} 
+1

ヘッダーを印刷していますので、本文を印刷する必要があります。 – tkausl

+0

どうすればいいですか?本文を取得しようとすると 'org.apache.http.client.entity.DecompressingEntity @ 11e21d0e'が返されます –

答えて

0

あなたがapacheのIOUtilを使用している場合は、 https://mvnrepository.com/artifact/commons-io/commons-io

次の依存関係が必要になりますが、以下の

try(InputStream content = httpresponse.getEntity().getContent()) 
     { 
      //With apache 
      String jsonResponse = IOUtils.toString(content, "UTF-8"); 
      System.out.println(jsonResponse); 
     } catch (UnsupportedOperationException | IOException e) 
     { 
      //Do something here, e.g. LOG 
     } 

を行う必要があり、本体のコンテンツを読むには

返されたステータスコードを検証して、コンテンツが含まれていることを確認することをお勧めします。 200.

InputStreamを文字列に変換する他の方法は、hereです。

一度Stringにロードすると、GSONなどのライブラリやhereのヘルプを使用できます。 Javaオブジェクトに変換することで、idフィールドをより簡単に取得できます。

関連する問題