发送cookie的Php肥皂请求 - 我无法发送cookie

时间:2013-04-22 15:20:57

标签: php web-services cookies curl

简介:我正在尝试使用webservice实现一些文件。这个网络服务让我可以自由地调用基本方法,但是当涉及到严重的方法时,它需要一个cookie,我的会话将使用该cookie建立。

我的问题:我尝试了两种方法,首先我通过setcookie()函数创建了普通的cookie,然后创建了一个像cookie这样的文件。第二个工作,现在我的连接自己创建一个cookie文件。现在我必须为复杂/严重的功能发送相同的cookie文件。

但它不起作用。

如果我的问题不明确,请具体询问,请帮助我。

那个人正在成功创建cookie文件。

$soap_do = curl_init($url);
curl_setopt($soap_do, CURLOPT_COOKIEJAR, "/mypath/testFile3.txt");
curl_setopt($soap_do, CURLOPT_HTTPHEADER,     $header);
curl_setopt($soap_do, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($soap_do, CURLOPT_MAXREDIRS, 8);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $soap_request);
$result = curl_exec($soap_do);
下面你会看到我试图通过curl发送cookie文件的代码,这部分不起作用。

$soap_do2 = curl_init($url);
curl_setopt($soap_do2, CURLOPT_COOKIEJAR, "/mypath/testFile3.txt");
curl_setopt($soap_do2, CURLOPT_HTTPHEADER, $header2);
curl_setopt($soap_do2, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($soap_do2, CURLOPT_MAXREDIRS, 8);
curl_setopt($soap_do2, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($soap_do2, CURLOPT_POSTFIELDS,     $soap_request2);
$result2 = curl_exec($soap_do2);

正如你所说的那样o_O是相同的代码,因为我不知道该怎么做,所以再次请求帮助。

2 个答案:

答案 0 :(得分:0)

另请参阅:http://php.net/manual/en/function.curl-setopt.php使用CURLOPT_COOKIEJAR存储您的Cookie,CURLOPT_COOKIEFILE(或CURLOPT_COOKIE)发送Cookie。

所以soap_do2需要curl_setopt($soap_do2, CURLOPT_COOKIEFILE, "/mypath/testFile3.txt");

也许您的$soap_request2为空或不正确。

当我在没有任何参数的情况下对此服务进行GetContactInfo()调用时,我得到了相同的错误。什么时候发送一个空的或无意义的参数,如new SoapParam(new stdClass(), "test")我得到了正确的答案。

答案 1 :(得分:0)

我发现了我的问题。

as @Bass Jobsen说我们可以使用CURLOPT_COOKIEJAR存储cookie并使用CURLOPT_COOKIEFILE发送cookie。这是一个问题。正如他告诉我改变了我的代码,它现在有效。

我的第二个错误:我每次都在代码开头创建cookie文件。现在我删除了那部分。

工作代码:

$soap_do = curl_init($url);
curl_setopt($soap_do, CURLOPT_COOKIEJAR, "/home/mypath/testFile3.txt");
curl_setopt($soap_do, CURLOPT_HTTPHEADER,     $header);
curl_setopt($soap_do, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($soap_do, CURLOPT_MAXREDIRS, 8);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $soap_request);
$result = curl_exec($soap_do);

上面,我告诉webservice哪个文件(带有确切路径)存储cookie值。

$soap_do2 = curl_init($url);
curl_setopt($soap_do2, CURLOPT_HTTPHEADER, $header2);
curl_setopt($soap_do2, CURLOPT_COOKIEFILE, "/home/mypath/testFile3.txt");
curl_setopt($soap_do2, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($soap_do2, CURLOPT_MAXREDIRS, 8);
curl_setopt($soap_do2, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($soap_do2, CURLOPT_POSTFIELDS,     $soap_request2);
$result2 = curl_exec($soap_do2);

以上,我发送了CURLOPT_COOKIEFILE

的cookie文件

希望能帮助其他人。