0

PHP から Curl を使用して .net Web サービスを呼び出そうとしています。やろうとするたびに、エンコーディングでエラーが発生します。utf...8 はサポートされていません。tcpdump (PacketPeeper) を確認すると、何らかの理由で curl が文字列 "utf-8" を "utf...8" に変換していることがわかります。実際には、すべての「-」を「...」に変換しています。

理由はありますか?

$req = "<?xml version=\"1.0\" encoding=\"utf‐8\"?>
    <soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema‐instance\"
    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
    xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">
    <soap:Body>
        <GenerateLink>
        ..............  
        </GenerateLink>
        </soap:Body>
    </soap:Envelope>";
$soap_do = curl_init(); 
curl_setopt($soap_do, CURLOPT_URL,            "http://www.myurl.com/serv.asmx" );   
curl_setopt($soap_do, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_POST,           true ); 
curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $req); 
curl_setopt($soap_do, CURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset: utf-8' ,'SOAPAction: "http://www.myurl.com/serv.asmx"', 'Content-Length: '.strlen($req) )); 


$response = curl_exec($soap_do);
4

1 に答える 1

0

アプリケーション間でコードをコピーして貼り付けたときにこれが発生し、貼り付け中に (通常は Office アプリケーションで) ハイフンが非改行ハイフンまたは単純なハイフンと区別しにくい文字に変更されました。CURL に渡される文字列 (部分) が格納されているファイルを 16 進エディターを使用して調べました。ord($req{33})==45デバッグ中に爆発する前に確認する必要があります! (インデックス 33 で確認してください。これはただの高速カウントでした!)

于 2013-03-28T21:07:18.590 に答える