使用cURL和PHP的Soap请求

使用cURL和PHP的Soap请求,php,api,soap,curl,wsdl,Php,Api,Soap,Curl,Wsdl,我试图在PHP中通过Curl发送SOAP帖子,但我总是遇到无法连接到主机的问题。 但当我尝试在Hull这样的基于web的客户端中使用相同的URL时,a得到了正确的响应: 投掷测试: 我的代码: $url=”https://gateway.monster.com/bgwBroker"; $soapMessage=''。 ''. ''. ''. “PresenceMedia SARL Jobs”。 “2004-06-09T14:41:44Z”。 ''. ''. ''. ''. “xrtpjobs

我试图在PHP中通过Curl发送SOAP帖子,但我总是遇到无法连接到主机的问题。 但当我尝试在Hull这样的基于web的客户端中使用相同的URL时,a得到了正确的响应:

  • 投掷测试:
  • 我的代码:

    $url=”https://gateway.monster.com/bgwBroker";
    $soapMessage=''。
    ''.
    ''.
    ''.
    “PresenceMedia SARL Jobs”。
    “2004-06-09T14:41:44Z”。
    ''.
    ''.
    ''.
    ''.
    “xrtpjobsx01”。
    “rtp987654”。
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    “xrtpjobsx01”。
    ''.
    ''.
    ''.
    “JobTypeFullTime”。
    ''.
    “拉巴特海岸”。
    “纽约”。
    “我们”。
    '11220'.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    “伦敦东部”。
    “伦敦”。
    “英国”。
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    ''.
    '';
    $headers=数组(
    “内容类型:text/xml;字符集=\“utf-8\”,
    “接受:文本/xml”,
    “缓存控制:无缓存”,
    “Pragma:无缓存”,
    “SOAPAction:\“运行”,
    “内容长度:”.strlen($soapMessage),
    ); 
    $soapUser=“xrtpjobsx01”;
    $soapPassword=“rtp987654”;
    $soap\u do=curl\u init();
    curl_setopt($soap_do,CURLOPT_URL,$URL);
    curl_setopt($soap_do,CURLOPT_PORT,8443);
    curl_setopt($soap_do,CURLOPT_USERPWD,$soapUser.:“$soapPassword);
    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_TIMEOUT,9000);
    curl_setopt($soap_do,CURLOPT_POSTFIELDS,$soapMessage);
    curl_setopt($soap_do,CURLOPT_HTTPHEADER,$headers);
    $result=curl\u exec($soap\u do);
    $err=curl\u error($soap\u do);
    回声“结果:”$结果;
    回显“
    错误:”$犯错误 回声“; var_dump(curl_getinfo($soap_do)); 回声“; ?>

在php中,使用简单的Soapclient发布响应。并检查响应,同时检查用于连接的端口是否空闲


什么是$result打印?嗨,fabio,打印结果是:无法连接到主机!!我已经使用了SoapClient,但仍在生成错误。当我尝试使用web浏览器访问我的Uri时,我得到了错误“此网页不可用”,当我尝试使用Curl或SoapClient发布数据时也是如此,当我使用基于web的客户端“Ex:Hurt”时,一切都很完美!!通过PHPSOAPClient发送所需的soap消息并不总是那么容易。由于php以自己的方式生成soap消息。您可能需要(Soap客户机的doRequest方法)[来完成此任务。
    $url = "https://gateway.monster.com/bgwBroker";

    $soapMessage = '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">' .
        '<SOAP-ENV:Header>'.
        '<mh:MonsterHeader xmlns:mh="http://schemas.monster.com/MonsterHeader">'.
          '<mh:MessageData>'.
            '<mh:MessageId>PresenceMedia SARL Jobs</mh:MessageId>'.
            '<mh:Timestamp>2004-06-09T14:41:44Z</mh:Timestamp>'.
          '</mh:MessageData>'.
        '</mh:MonsterHeader>'.
        '<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">'.
          '<wsse:UsernameToken>'.
            '<wsse:Username>xrtpjobsx01</wsse:Username>'.
            '<wsse:Password>rtp987654</wsse:Password>'.
          '</wsse:UsernameToken>'.
        '</wsse:Security>'.
      '</SOAP-ENV:Header>'.
      '<SOAP-ENV:Body>'.
        '<Job jobRefCode="Job - minimal fields" jobAction="addOrUpdate" jobComplete="true" xmlns="http://schemas.monster.com/Monster" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.monster.com/Monster http://schemas.monster.com/Current/xsd/Monster.xsd">'.
          '<RecruiterReference>'.
            '<UserName>xrtpjobsx01</UserName>'.
          '</RecruiterReference>'.
          '<JobInformation>'.
            '<JobTitle><![CDATA[PresenceMedia SARL its a simple test from morocco blablablablablablablablablablablabla]]></JobTitle>'.
            '<JobStatus monsterId="4">JobTypeFullTime</JobStatus>'.
            '<PhysicalAddress>'.
              '<City>Rabat Shore</City>'.
              '<State>NY</State>'.
              '<CountryCode>US</CountryCode>'.
              '<PostalCode>11220</PostalCode>'.
            '</PhysicalAddress>'.
            '<JobBody><![CDATA[PresenceMedia SARL Body blablabla blablabla blablabla blablabla blablabla blablabla blablabla]]></JobBody>'.
          '</JobInformation>'.
          '<JobPostings>'.
            '<JobPosting>'.
              '<Location>'.
                '<City>London East</City>'.
                '<State>London</State>'.
                '<CountryCode>UK</CountryCode>'.
              '</Location>'.
              '<JobCategory monsterId="47" />'.
              '<JobOccupations>'.
                '<JobOccupation monsterId="11909" />'.
              '</JobOccupations>'.
              '<BoardName monsterId="1" />'.
              '<Industries>'.
                '<Industry>'.
                  '<IndustryName monsterId="1" />'.
                '</Industry>'.
              '</Industries>'.
            '</JobPosting>'.
          '</JobPostings>'.
        '</Job>'.
      '</SOAP-ENV:Body>'.
    '</SOAP-ENV:Envelope>';

    $headers = array(             
            "Content-type: text/xml;charset=\"utf-8\"", 
            "Accept: text/xml", 
            "Cache-Control: no-cache", 
            "Pragma: no-cache", 
            "SOAPAction: \"run\"", 
            "Content-length: ".strlen($soapMessage),
        ); 

    $soapUser = "xrtpjobsx01";
    $soapPassword = "rtp987654";

    $soap_do = curl_init();
    curl_setopt($soap_do, CURLOPT_URL, $url);
    curl_setopt($soap_do, CURLOPT_PORT, 8443);
    curl_setopt($soap_do, CURLOPT_USERPWD, $soapUser.":".$soapPassword);
    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_TIMEOUT,9000);    
    curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $soapMessage); 
    curl_setopt($soap_do, CURLOPT_HTTPHEADER,     $headers);


    $result = curl_exec($soap_do);
    $err = curl_error($soap_do);

    echo "Result:" . $result;
    echo "<br>Error:" . $err ;

    echo "<b><pre>";
    var_dump(curl_getinfo($soap_do));
    echo "</pre>";


    ?>
$client = new SoapClient($Url, $options);
$data = $client->functionName($params);