2009-05-16 16 views
94

cURLを使用してPHPでRAW POSTを行うにはどうすればよいですか?PHPでcURLを使用するRAW POST

未処理のままで、エンコードされずにデータが文字列に格納されます。データは次のようにフォーマットされるべきである:

... usual HTTP header ... 
Content-Length: 1039 
Content-Type: text/plain 

89c5fdataasdhf kajshfd akjshfksa hfdkjsa falkjshfsa 
ajshd fkjsahfd lkjsahflksahfdlkashfhsadkjfsalhfd 
ajshdfhsafiahfiuwhflsf this is just data from a string 
more data kjahfdhsakjfhsalkjfdhalksfd 

1つのオプションは、手動で全体のHTTPヘッダが送信されて書くことであるが、それはあまり最適と思われます。

とにかく、POSTを使用し、text/plainを使用し、生データを$variableから送信するというオプションをcurl_setopt()に渡すことはできますか?

答えて

171

私はちょうど解決策を見つけました。他の誰かがそれに遭遇した場合、私自身の質問に答えるようなものでした。

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,   "http://url/url/url"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST,   1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,  "body goes here"); 
curl_setopt($ch, CURLOPT_HTTPHEADER,  array('Content-Type: text/plain')); 

$result=curl_exec ($ch); 
+4

あなたのコンテンツの長さのヘッダーを設定するか、それを設定する必要がありますか? –

+3

私はこれをまったく動作させることはできません。私は生データを投稿しようとしているページがあります。そのページは、受信したすべての生データをデータベーステーブルに記録します。新しい行はまったくありません。 2009年以降何か変わったことがありますか? – James

+1

これは私のために、HTTPヘッダーを指定せずに動作します。 – xryl669

関連する問題