我正在使用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标头吗?或者我做错了什么?
答案 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
}