2014-11-24 48 views
1

我正在使用gSOAP生成的類來發送和接收SOAP消息。問題是,當我使用代理服務器,如:gSOAP - 修改HTTP 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 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 
} 
+0

我需要添加額外的代碼?我可以做任何我不想在'myhttppost'中請求不變的東西? – lokimidgard 2016-11-30 09:17:13