2016-03-24 22 views
1

私は、アプリケーションAPIへのREST呼び出しを行うPHPウェブサービスに取り組んでいます。私のWebサービスは、Ubuntuと、以下のコマンドを実行しているLAMPサーバは、コマンドラインから完璧な作業している上に構築されています:PHP CURL PUTコマンドラインと同等

カール-k -uユーザ名-H「コンテンツタイプ:アプリケーション/ xmlの」-d PUT -X @ request.xml https://server/path/

しかし、私はXMLが欠落していることを示す、PHPで私はRESTサーバーから次の応答を取得しています同じ要求を構築しようとすると:ファイルの

HTTP400Premature終わりを。ここで

私のPHP要求のコードです:私は読んだことがある

$ch2 = curl_init($service_url); 
$headers = array('Content-Type: application/xml', 'Accept: application/xml'); 
curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch2, CURLOPT_PUT, 1); 
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch2, CURLOPT_POSTFIELDS, $xmlRequest); 
curl_setopt($ch2, CURLOPT_USERPWD, 'user:password'); 
$curl_response = curl_exec($ch2); 

すべてがCURLOPT_POSTFIELDSこれを行うための場所ですが、私は、これは追加のためだったと思っ示します「?」変数を実際のURLに変換します。とにかく、どんな助けもありがとう。あなたはCURLOPT_PUTを使用する場合

+0

'男curl'を試してみて、' -XPUT'と私が探しているものを '-d' – Sammitch

+0

こんにちはSammitch、見ていますPHPの同等のしかし。私はそれをチェックアウトします。 – GED125

答えて

1

manualによると、あなたはまた、CURLOPT_INFILECURLOPT_INFILESIZEを提供する必要があります。代わりに

curl_setopt($ch2, CURLOPT_POSTFIELDS, $xmlRequest); 

のかも

curl_setopt($ch2, CURLOPT_INFILE, fopen('request.xml', 'r')); 
curl_setopt($ch2, CURLOPT_INFILESIZE, filesize('request.xml')); 
+0

それはそれでした!ありがとうございました!今は、ファイルではなくコードで作成されたXMLを使用する方法を理解する必要がありますが、難しくないと確信しています。 – GED125

関連する問題