PHPカールを使用したRESTful WCF Webサービスの問題

curl php rest wcf
PHPカールを使用したRESTful WCF Webサービスの問題

php curlを使用してWCF Webサービス(PaySimpleのv3.00 API)を使用すると問題が発生します。 xmlペイロードをサービスに投稿しようとしていますが、400-Bad Requestエラーが引き続き発生します。 Firefoxのポスターアドオンを使用すると、まったく同じペイロードを投稿でき、期待される応答が得られます
– 必要な応答を含むXML応答で200 OK。 これは
私のコードのスニペット:

        $ch = curl_init();
        $payload = $createPayload();
        $length = strlen($payload);
        $headers = array("Expect:");
        if($isPost)
        {
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
            $headers[] = "Content-length: $length";
        }
        else {
            curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
        }
        if($requestType == 'xml')
        {
            $headers[] = 'Content-Type: text/xml; charset: utf-8';
            $headers[] = 'Accept: application/xml';
        }
        else {
            $headers[] = 'Content-Type: application/json; charset: utf-8';
            $headers[] = 'Accept: application/json';
        }
        $headers[] = "Connection: close";
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
        //debugging
        curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
        $fh = fopen('curl_debug.txt', 'w');
        curl_setopt($ch, CURLOPT_STDERR, $fh);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $response = curl_exec($ch);
        curl_close($ch);

$ payloadには次の値が含まれます。

APIUser1989pxTbp4F6y7JuaMu36qazEw51JiqUA7lGme0j62r3UeQyNojvEfpNo7tn4pLq0yEULHz5KykHWV6[email protected]paysimpledev.comTestBillingAddress1TestBillingCity802026TestCompany0001-01-01T00:00:[email protected]:00:00TestLastName5551234567true0

curl_debug.txtに表示される内容は次のとおりです。

  • sandbox-api.paysimple.comポート443(#0)へのconnect()について

  • 165.193.50.51を試しています…​ *接続済み

  • sandbox-api.paysimple.com(165.193.50.51)ポート443(#0)に接続

  • 証明書検証場所を正常に設定します。

  • CAfile:なしCApath:/ etc / ssl / certs

  • RC4-MD5を使用したSSL接続

  • サーバー証明書

  • 件名:C = US; ST =コロラド; L =デンバー; O = PaySimple、Inc .; OU = PaySimple;
    CN = *。paysimple.com

  • 開始日:2010-05-04 00:00:00 GMT

  • 有効期限:2011-06-29 23:59:59 GMT

  • 発行者:C = US; O = DigiCert Inc; OU = www.digicert.com; CN = DigiCert High
    保証CA-3

  • SSL証明書を確認します。

POST /3.00/paysimpleapi.svc/xml/listcustomers HTTP / 1.1 + Host:sandbox-api.paysimple.com + Content-length:1153 + Content-Type:text / xml; charset:utf-8 + Accept:application / xml + Connection:close

HTTP / 1.1 400 Bad Request + Connection:close + Date:Fri、27 Aug 2010 11:07:21 GMT + Server:Microsoft-IIS / 6.0 + X-Powered-By:ASP.NET + X-AspNet-Version:2.0 .50727 + Set-Cookie:ASP.NET_SessionId = oxpese454u4rr3552evybjue; path = /; HttpOnly + Cache-Control:private + Content-Length:0

コネクション#0を閉じる

F1! F1!

  0  0


ベストアンサー

POSTのContent-Typeは、application / xmlではなく、おそらくapplication / x-www-form-urlencodedまたはmultipart / form-dataである必要があります

0


問題はおそらく次のいずれかにあります。

Content-Type: text/xml; charset: utf-8
Accept: application/xml

両方に対してtext / xmlまたはapplication / xmlを試してください。大文字のUTF-8を試してください。 Firefoxと同じヘッダーを送信してください。

0


Tash

ヘッダーを使用:Content-length:1262 Content-type:application / xml; charset = utf-8 Accept:application / xml Method:invokeMethod UserAgent:PaySimple Host:sandbox-api.paysimple.com

00::[email protected]:00:00 LastNameThisは新規顧客である…​ Fiddler3035551212 1122ブギウギ・アベニュー#5City 80111true6から0 1122ブギウギ・アベニュー#6City 801116CompanyName99999 0001-01-01T00要求SandboxMelody qUWzSPxkcxDR6RJiR2ypzbznV4m6jva5N8kaosnNqQJYqNTGcVouWhKbN5NPGiZxJdmx2QnapYNcwq1bjtfmGwLhBcdMT6x3z7IdPVYA3H7HDBUqwW6eJDyaf8dhKqr0をお試しください

投稿URLとリクエスト本文の両方でADDCUSTOMERを使用します

0


タイトルとURLをコピーしました