0

コードを見つけたが、すべてのヘッダーを取得していない引用されたリンクの下にある、AndroidアクティビティでWebサイトのHTTPヘッダーを取得する必要があるAndroidアプリを開発しています。

http://www.mkyong.com/java/how-to-get-http-response-header-in-java/

下の画像に示すような結果が必要です

忙しい猫
(ソース: osxdaily.com )

サポートしてください。

4

4 に答える 4

2

Android でも動作するはずの Java サンプル コードを確認してください。

方法-1

URL url = new URL("http://www.google.com:80");
URLConnection conn = url.openConnection();

Map<String, List<String>> headerFields = conn.getHeaderFields();

Set<String> headerFieldsSet = headerFields.keySet();
Iterator<String> hearerFieldsIter = headerFieldsSet.iterator();

while (hearerFieldsIter.hasNext()) {

    String headerFieldKey = hearerFieldsIter.next();
    List<String> headerFieldValue = headerFields.get(headerFieldKey);

    StringBuilder sb = new StringBuilder();
    for (String value : headerFieldValue) {
        sb.append(value);
        sb.append("");
    }

    System.out.println(headerFieldKey + "=" + sb.toString());

}

Method-2 (参照: Android の HttpClient からヘッダーを取得する)

HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("http://mkyong.com");
HttpResponse response = client.execute(request);

//get all headers       
Header[] headers = response.getAllHeaders();
for (Header header : headers) {
    System.out.println("Key : " + header.getName() 
      + " ,Value : " + header.getValue());
}

//get header by 'key'
String server = response.getFirstHeader("Server").getValue();

それがあなたを助けることを願っています..

于 2014-04-07T10:31:45.217 に答える
1

あなたが持っているとしましょう

HttpResponse response ;

(特定のヘッダーの場合)

Header[] headers = response.getHeaders("Server");
        if (headers.length > 0) {
            String value = headers[0].getValue();

すべてのヘッダーを取得する

Header[] headers = response.getAllHeaders();

for(int i =0 ; i<headers.length;i++)
{
System.out.println("header : "+i+" - > "+headers[i]);
}
于 2014-04-07T09:42:34.833 に答える
0

これを試して:

  1. HttpResponse応答 ; // http レスポンス

  2. レスポンスからエンティティを取得

    final HttpEntity entity = response.getEntity();
    if(entity == null) {
        return;
    }
    
  3. エンティティからヘッダー オブジェクトを取得します。これを参照

    final Header header = entity.getContentEncoding();
    if (header == null) {
        return;
    }
    
  4. 各ヘッダ要素を取得こちらを参照

    for (HeaderElement h : header.getElements()) {
        if (h.getName().equalsIgnoreCase(HEADER_PARAMETER_VALUE)) {
            h.getValue();
            return;
        }
    }
    
于 2014-04-07T09:51:57.270 に答える
0

http post または get に応じて、getAllHeaders または getHeaders メソッドを使用できます。これは http 投稿の例です。

HTTP POST メソッド:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL);

最初の方法:

public Header[] getAllHeaders () 
Added in API level 1
Returns all the headers of this message. Headers are orderd in the sequence they will be sent over a connection.

Returns
all the headers of this message 

2番目の方法の説明:

public Header[] getHeaders (String name) 
Added in API level 1
Returns all the headers with a specified name of this message. Header values are ignored. Headers are orderd in the sequence they will be sent over a connection.

Parameters
name  the name of the headers to return. 

Returns
the headers whose name property equals name. 
于 2014-04-07T09:47:50.497 に答える