gSOAP - 修改 HTTP POST 标头

gSOAP - Modify HTTP POST header

本文关键字:POST 标头 HTTP 修改 gSOAP      更新时间:2023-10-16

我正在使用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 标头?还是我做错了什么?

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

或者,您可以定义一个回调来覆盖 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
}