使用PHP cURL调用SOAP Web服务(从SOAPUI移动)

使用PHP cURL调用SOAP Web服务(从SOAPUI移动),php,web-services,soap,curl,soapui,Php,Web Services,Soap,Curl,Soapui,我不确定这是否适合它,但我希望你们中的一些人熟悉PHP cURL和SOAPUI 我已经成功地使用SOAPUI提交了一个web服务请求,但是使用php却没有成功。PHP目前的超时时间为30秒(我还尝试将超时时间提高到3分钟)。SOAPUI请求大约需要3秒钟才能完成 如果你们中的任何人能发现我的错误,我将不胜感激 谢谢 以下是我的SOAPUI属性-端点为: SOAPUI请求: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-

我不确定这是否适合它,但我希望你们中的一些人熟悉PHP cURL和SOAPUI

我已经成功地使用SOAPUI提交了一个web服务请求,但是使用php却没有成功。PHP目前的超时时间为30秒(我还尝试将超时时间提高到3分钟)。SOAPUI请求大约需要3秒钟才能完成

如果你们中的任何人能发现我的错误,我将不胜感激

谢谢


以下是我的SOAPUI属性-端点为: SOAPUI请求:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:urn="urn:eclg:coursecopy:enterprisecourse" xmlns:v2="http://CCWS-Services.eCollege.com/EnterpriseServices/Types/v2.1/">

<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Action>urn:eclg:coursecopy:enterprisecourse:createcoursesection:request</wsa:Action>
<wsa:To>http://ccws-services.ecollege.com/EnterpriseServices/v2.1/EnterpriseCourse.svc</wsa:To>
</soap:Header>

<soap:Body>
     <urn:CreateCourseSection>
 <urn:createCourseSection>
***REMOVED****
 </urn:createCourseSection>
</urn:CreateCourseSection>
</soap:Body>

</soap:Envelope>

你可以试试这个。这就是我在使用cURL in.php作为SOAPWeb服务时使用的方法

$envelope = '<soap:Envelope> .... </soap:Envelope>';

$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL,            "https://ccws-services.ecollege.com/EnterpriseServices/v2.1/EnterpriseCourse.svc" );
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_TIMEOUT,        10);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($soap_do, CURLOPT_POST,           true );            
curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $envelope); 
curl_setopt($soap_do, CURLOPT_VERBOSE, TRUE); 
curl_setopt($soap_do, CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: \"/soap/action/query\"", "Content-length: ".strlen($envelope))); 

$result = curl_exec($soap_do);
$envelope='..';
$soap\u do=curl\u init();
curl_setopt($soap_do,CURLOPT_URL,”https://ccws-services.ecollege.com/EnterpriseServices/v2.1/EnterpriseCourse.svc" );
curl_setopt($soap_do,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($soap_do,CURLOPT_TIMEOUT,10);
curl_setopt($soap_do,CURLOPT_RETURNTRANSFER,true);
curl_setopt($soap_do,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($soap_do,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($soap_do,CURLOPT_POST,true);
curl_setopt($soap_do,CURLOPT_POSTFIELDS,$envelope);
curl_setopt($soap_do,CURLOPT_VERBOSE,TRUE);
curl\u setopt($soap\u do,CURLOPT\u HTTPHEADER,数组(“内容类型:text/xml”,“SOAPAction:\”/soap/action/query\”,“内容长度:”.strlen($信封));
$result=curl\u exec($soap\u do);

我尝试连接到它时确实超时了。在你这端试试,看看它是否适用于你的用户名和密码

最好试试Soapclient你能发布WSDL吗?@Swapn14我试过Soapclient,但我也没有运气。它们不提供要链接到的wsdl,只提供。svc@Halfwarr@rawrzors那么你在请求属性中使用用户名和密码了吗?我在添加了安全头的情况下尝试了你的代码,但没有超时。但是,我没有得到回应(bool(false))。至少这是进步!明天我会做更多的测试,让你随时了解最新情况。
$envelope = '<soap:Envelope> .... </soap:Envelope>';

$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL,            "https://ccws-services.ecollege.com/EnterpriseServices/v2.1/EnterpriseCourse.svc" );
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_TIMEOUT,        10);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($soap_do, CURLOPT_POST,           true );            
curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $envelope); 
curl_setopt($soap_do, CURLOPT_VERBOSE, TRUE); 
curl_setopt($soap_do, CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: \"/soap/action/query\"", "Content-length: ".strlen($envelope))); 

$result = curl_exec($soap_do);