3

管理されていないC++を使用してWebサービスに接続する方法をテストするために、開発したWCFWebサービスを利用するための単純なcmdクライアントを作成しています。

私はこのチュートリアルhttp://www.blinnov.com/en/2008/01/22/wcf-service-unmanaged-client/を段階的に実行していますが、それでもサービスを正常に利用できませんでした。

#include "BasicHttpBinding_USCOREIService1.nsmap"
#include "soapBasicHttpBinding_USCOREIService1Proxy.h"
#include <iostream>
#include <string>

using namespace std;


int main(int argc, char **argv)
{
BasicHttpBinding_USCOREIService1Proxy myProxy;
static const char* const endPoint = "http://localhost:50181/Service1.svc";

myProxy.soap_endpoint = endPoint;
_ns1__GetData param;
_ns1__GetDataResponse response;
param.fileName = &std::string("house.ifc");

if ( myProxy.GetData(&param, &response) == SOAP_OK) {
    cout << "Hello" << endl; //Succeeded
}
else {

    myProxy.soap_stream_fault(std::cerr);
}
return 0;
}

常にエラー415エラーが発生します:SOAP-ENV:Server [サブコードなし]「HTTPエラー」詳細:HTTP / 1.1 415サポートされていないメディアタイプ私は一日中それを成し遂げようと試みてきましたが、それでも新しいことは何もありません。:(

4

2 に答える 2

1

これは、gSOAP クライアントと WCF サービスが SOAP 1.2 とうまく連携しないためです。「-1」スイッチを指定してsoapcpp2を使用してSOAP 1.1を強制すると機能します。

Ubuntu の gSOAP 2.8.4 でテストしましたが、動作します。

于 2014-05-13T15:50:28.703 に答える
0

クライアントが Windows マシンにインストールされる場合、最善の方法は、クライアントとマネージド生成プロキシを接続する C++\CLI ブリッジを使用することです。これは、すべての種類の wcf バインディング (HTTP、TCP、MSMQ) で機能する唯一のソリューションです。 、...)。

別のライブラリを選択する場合は、それが HTTP バインディングに対してのみ完全に機能することを確認してください。

于 2011-01-27T20:31:47.390 に答える