gSOAP - 修改HTTP POST标头

时间:2014-11-24 16:06:40

标签: c++ web-services http soap gsoap

我正在使用gSOAP生成的类来发送和接收SOAP消息。问题是当我使用代理时:

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标头吗?或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

设置soap->proxy_host后,POST标头中将使用完整的URL,因为代理需要绝对路径才能连接到目标端点。这是合规要求。

或者,您可以定义回调以覆盖HTTP post操作,如下所示:

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
}