2013-08-21 4 views
1

gSOAP 2.8.15로 작업 중이며 gsoap 설명서 (http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.14)의 19.14 절의 지침에 따라 HTTP 인증을 구현하려고합니다.gSOAP HTTP 인증

유일한 차이점은 설명서에 도입 된 코드가 C로 작성되었지만 C++로 코딩되어 있다는 점입니다. 나는를 호출 할 때

// The variable wss is the a instance of web service service generated by soapcpp2. 
if (wss.userid == NULL || wss.passwd == NULL) 
    //...... 

문제는 다음과 같습니다

웹 서비스 서버 측에서

// The variable wsp is a instance of web service proxy generated by soapcpp2. 
// The proxy is a sub-class of the class soap 
wsp.userid = "user"; 
wsp.passwd = "password"; 
// call the function of web service 
wsp.get_version(&result); 

, 내가 인증을 확인하려면 다음 코드를 사용의 클라이언트 측에 대한 내 코드입니다 서버 측에서는 클라이언트 측 코드를 사용하는 웹 서비스의 기능인 userid와 passwd는 항상 NULL입니다. 하지만 preemptive 인증 모드로 userid와 passwd를 전달하여 soapUI를 사용하여 동일한 함수를 호출하면 서버는 문제없이 정보를 얻습니다.

누군가가 문제를 해결하는 데 도움을 주시면 감사하겠습니다. 주목 해 주셔서 감사합니다.

답변

1

웹 서비스 서버와 클라이언트간에 전송 된 패키지를 잡기 위해 tcpdump를 사용했으며 클라이언트가 웹 서비스의 기능을 호출 할 때 HTTP 헤더가 전송되지 않음을 발견했습니다. 그래서 gSOAP의 문서에서 몇 가지 검색을 수행하고 다음 문장을 찾았습니다.

클라이언트는 http : // 접두어를 사용할 수 있습니다. 부재중 인 경우 HTTP 헤더가 전송되지 않으며 HTTP 기반 정보가 서비스에 전달되지 않습니다.

내 문제를 해결합니다 ...