Подключение к веб-сервису WCF с использованием gSOAP - PullRequest
3 голосов
/ 25 декабря 2010

Я пишу простой cmd-клиент, чтобы попытаться использовать веб-сервис WCF, который я разработал, чтобы проверить, как подключиться к веб-сервису с помощью неуправляемого C ++.

Я следовал этому руководству 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: Сервер [без субкода] «Ошибка HTTP» Деталь: HTTP /1.1 415 Неподдерживаемый тип носителя Я целый день пытался это сделать, но все равно ничего нового.(

Ответы [ 2 ]

1 голос
/ 13 мая 2014

Это связано с тем, что клиент gSOAP и служба WCF плохо работают с SOAP 1.2. Это будет работать, если вы используете soapcpp2 с переключателем «-1» для принудительной установки SOAP 1.1.

Я протестировал его с помощью gSOAP 2.8.4 в Ubuntu, и он работает.

0 голосов
/ 27 января 2011

Если ваш клиент будет установлен на Windows-машине, лучше всего использовать мост C ++ \ CLI, который соединяет ваш клиент и управляемый прокси-сервер, это единственное решение, которое работает для всех видов привязок wcf (HTTP, TCP, MSMQ, ...).

Если вы выбираете другую библиотеку, убедитесь, что она отлично работает только для HTTP-привязки.

...