1

JSON 形式を使用して Web サイト API に変数を投稿する必要があります。いくつかの調査とテスト用の投稿サーバーを使用した後、次の文字列を思いつきました。

curl -H "Content-Type: application/json" -X POST -d '{"id":"value"}' http://posttestserver.com/post.php

Successfully dumped 0 post variables.
View it at http://www.posttestserver.com/data/2015/09/12/09.46.20574590076
Post body was 12 chars long.

ただし、変数は文字列から解析されません (この場合、変数「id」が見つかるはずです)。代わりに、すべてが投稿本文に入れられます。

完全な投稿リクエストは、指定されたアドレスで見ることができます:

Time: Sat, 12 Sep 15 09:46:20 -0700
Source ip: 178.112.221.72

Headers (Some may be inserted by server)
HTTP_CONNECTION = close
REQUEST_URI = /post.php
QUERY_STRING = 
REQUEST_METHOD = POST
GATEWAY_INTERFACE = CGI/1.1
REMOTE_PORT = 53709
REMOTE_ADDR = 178.112.221.72
CONTENT_LENGTH = 12
CONTENT_TYPE = application/json
HTTP_ACCEPT = */*
HTTP_USER_AGENT = curl/7.43.0
HTTP_HOST = posttestserver.com
UNIQUE_ID = VfRW3NBx6hIAAHNyJToAAAAK
REQUEST_TIME_FLOAT = 1442076380.6991
REQUEST_TIME = 1442076380

No Post Params.

== Begin post body ==
'{id:value}'
== End post body ==

Upload contains PUT data:
'{id:value}'

ここで、データは「投稿本文」と PUT の下の両方に表示されます。しかし、ここでも投稿パラメーターはリストされていません。

私は何か間違ったことをしていますか?JSON を使用して変数を投稿することはまったく可能ですか ( with を使用する方法id=value&id2=value2) application/x-www-form-urlencoded?

PS同様の投稿を見つけました(curlを使用してREST / JSONサービスに投稿する方法は?)、サーバーによって異なります。しかし、私の場合、このテストサーバーを使用することで、実際の「生の」リクエストが表示されるはずです(posttestserver.com から引用)

「したがって、* HTTP POST のコンテンツをファイルにダンプして、後で表示できる簡単なサービスをまとめました。」

)。

4

1 に答える 1

1

Post Body実際にセクションにデータが表示されていることに気付くでしょう。application/json を使用して CURL 経由で送信すると、その JSON が本体にポンピングされるだけです。もしそうなら、それはx-www-form-urlencodedPHP がネイティブに理解できるフォーマットにシリアライズされていたでしょうid=value。意図したとおりに機能しているように見えますが、サーバーが JSON を理解していないだけです。

その特定のサービスにコンテンツを適切に理解させたい場合は、次のようにして標準x-www-form-urlencoded形式にシリアル化する必要があります。-d "id=value"

于 2015-09-12T20:51:58.700 に答える