2014-11-24 4 views
1

Я использую классы, сгенерированные gSOAP, для отправки и получения сообщений SOAP. Проблема заключается в том, что, когда я использую прокси-сервер, как:gSOAP - изменить заголовок POST POST

service.proxy_host = "some-proxy.mydomain.com"; 
service.proxy_port = 8080; 

заголовок POST модифицируется и отправляет всю конечную точку URL, а не только URL приложения, как это:

POST https://my-portal-server.mydomain.com/ecater/ws/rbiecat:data/some_Port HTTP/1.1 

вместо того, чтобы просто это:

POST /ecater/ws/rbiecat:data/some_Port HTTP/1.1 

Может ли кто-нибудь сказать мне, как я могу изменить заголовок POST перед отправкой запроса? Или я делаю что-то неправильно?

ответ

0

Когда установлено soap->proxy_host, полный URL-адрес используется в заголовке POST, поскольку для прокси-сервера требуется абсолютный путь для подключения к конечной точке назначения. Это требование соответствия.

В качестве альтернативы, вы можете определить функцию обратного вызова, чтобы переопределить после операции HTTP следующим образом:

soap_init1(&soap, ...); // etc 
soap->fpost = myhttppost 
... 
int myhttppost(struct soap *soap, const char *endpoint, const char *host, int port, const char *path, const char *action, size_t count) 
{ 
    // see stdsoap2.cpp http_post() for code to customize your HTTP POST operation 
} 
+0

мне нужно добавить дополнительный код? Я могу делать все, что не хочу в 'myhttppost', запрос не меняется? – lokimidgard