发送cookie的Php Soap请求-我不能发送cookie


Php Soap Request with sending a cookie - I couldn't send cookie

简介:我正在尝试通过使用webservice实现一些文件。这个web服务允许我自由地调用基本方法,但是当涉及到严肃的方法时,它需要一个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,因为我不知道该怎么做,所以请帮助。

参见: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"),我得到了正确的响应。

我找到我的问题了。

我们可以用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文件