2

PHPでfsockopen()を使用していくつかのAPIリクエストを実行しています。正しく機能するほとんどのAPIの場合、 http: //geocoding.cloudmade.com/から次の(RAW)応答が返されます。

HTTP/1.1 200 OK
Server: nginx/0.6.35
cache-control: no-cache
Content-Type: application/json; charset=utf-8
Date: Tue, 19 Feb 2013 11:08:05 GMT
pragma: no-cache
Transfer-Encoding: chunked
Connection: close

2fb
{"found": 1, "bounds": [[52.48732, 13.42553], ...
0

私の問題は、本文の最初の行の「2fb」と最後の行の「0」が何も教えてくれないことです。Firefox経由で同じリクエストを送信した場合、本文に「2fb」または「0」が含まれていません。したがって、それは何らかの意味があると思います。しかし、何ですか?

ヒントをありがとう!

4

1 に答える 1

4

これはチャンク転送コーディングTransfer-Encoding: chunkedであり、応答ヘッダーによっても示されます。

チャンクエンコーディングは、メッセージを一連のチャンクとして転送するためにメッセージの本文を変更します。各チャンクには独自のサイズインジケーターがあり、その後にエンティティヘッダーフィールドを含むオプションのトレーラーが続きます。これにより、動的に生成されたコンテンツを、受信者が完全なメッセージを受信したことを確認するために必要な情報とともに転送できます。

2fb、の後に\r\nは、次のチャンクのサイズ(763バイト)を示します。のチャンクサイズは0最後のチャンクを示します。

于 2013-02-19T11:19:10.077 に答える