简介:我正在尝试通过使用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文件