常にHTTPS経由で使用することを目的とした.NETWCFサービスを作成しました。最初にサービススケルトンを作成してHTTPで実行したときは、正常に機能していました。PHP5を使用して、組み込みのSOAP関数との相互運用性をテストしました。ただし、HTTPSに切り替えた後、PHPから関数を呼び出そうとすると、「MethodNotAllowed」というメッセージと「http」の障害コードで障害が返されます。ただし、メソッドのリストを取得することはできます。メソッド「Test」を呼び出すとエラーが発生します。
WCFの構成は次のとおりです。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="secureBasic">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="apiBehavior" name="TestAPI.API">
<endpoint address="https://192.168.0.3/API"
binding="basicHttpBinding"
bindingConfiguration="secureBasic"
contract="TestAPI.IAPI"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="apiBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
そして、これがPHPがそれをどのように呼んでいるかです:
$client = new SoapClient("https://192.168.0.3/API.svc?wsdl");
echo "<pre>" . print_r($client->__getFunctions(), 1) . "</pre>";
$param = new stdClass();
$param->A = "123";
$param->B = "456";
try {
$client->Test($param);
} catch (Exception $e) {
die("<pre>" . print_r($e,1) . "</pre>");
}
テストに自己署名SSL証明書を使用していますが、PHPに信頼できる証明書が必要だとは思いません。
私は何が間違っているのですか?