2015-09-08 161 views
-3

我想创建一个php代码,将提供我们需要在一个地方的所有信息。发送查询到远程服务器

一些我们需要的是https://link

我能够使用PHP的形式直接发送查询,但唯一的问题是有人进行手动搜索后,它仅适用的信息。一旦有人搜索了某个东西,那么它一直运行,直到浏览器关闭。

一旦用户关闭浏览器,它就会再次开始返回错误。

尝试打开此链接而不进行手动搜索。 https://link

会给出错误,现在打开第一个链接https://然后搜索一些东西。

现在再次打开这个链接:https://searchType=singleQuery&phrase=exact&keywords=02284065

,不应该给一个错误。

有人向我解释发生了什么事以及我如何解决这个问题?

谢谢。

编辑:
我无权访问远程服务器上的代码。在我的目的我目前正在使用

<?php 
    echo file_get_contents(searchType=singleQuery&phrase=exact&keywords=02284065"); 
?> 

来测试。一旦我解决了这个问题,我会进一步开发代码。

编辑:这是我迄今为止,这返回表单,但不提交表单。

<?php 
$url='https:/'; 
$keywords =''; 
$ch = curl_init() ; 
curl_setopt($ch, CURLOPT_URL, "$url"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$data = array(
'keywords' => "$keywords", 
'Search' => 'submit' 
); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$output = curl_exec($ch); 
curl_close($ch); 
echo "$output\n"; 
?> 
+0

请提供代码,以便我们可以深入实际的问题,而不是猜测可能是什么。 – DeDee

+0

请提供有关错误的更多信息 – maniteja

+0

请参阅上面的修改。谢谢。 – rm65453

回答

2

这很可能是您尝试以不正确的方式使用此服务。现在,许多门户只是从客户的“白名单”接受查询(更准确地说是POST请求)。此白名单中的客户可能是网站本身,也可能是授权的移动应用。

您应该了解有关Same Origin Policy的信息,作为我们所谈论内容的“基本”。

通常,网站所有者决定谁可以查询服务器,谁不能查询。

解决方案:你应该联系healthinfo.moh.gov.on.ca管理员,询问他们是否有一些API,以获得更结构化和正确的方法您的数据。

编辑:可能你可以在网站上的手动之后做一些搜索,因为有些会话数据。之后,会话过期,您无法继续。

+0

我会尝试,但它的政府网站,会很惊讶,如果他们能够提供任何有用的信息。您认为它是一个成功搜索后放置的cookie,它允许我的代码在浏览器关闭之前工作? – rm65453

+0

我不是在谈论cookie,而是会话。不同的概念! :)另外,如果您尝试在没有正确权限的情况下提供政府数据,您可能会偶然发现许多法律问题......请注意! –

+1

我肯定会要求许可。现在只是测试可行性。感谢你的帮助。 – rm65453

2

同意Francesco - esp。关于滥用和联系供应商 - 但会增加,为教育目的:

尝试使用cURL请求,而不是file_get_contents。

php doc examples

一个片段我发生与现在进行的工作:

public function triggerMessage(Contact $tocontact, $msgid) 
{ 
    $msgurl = 'https://www.server.com/t/?' . $msgid; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $msgurl); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POST, count(get_object_vars($tocontact))); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $this->contactToUrlParams($tocontact)); 
    $result = curl_exec($ch); 
    curl_close($ch); 

    return $result; 
} 
+0

刚发送一封电子邮件给提供商。在实际的代码在php中运行之前,是否可以使用curl在后台发送虚拟查询?这基本上可以解决我的问题。 – rm65453

+0

卷曲肯定可以从cli运行。如果你碰巧在linux上:http://www.thegeekstuff.com/2012/04/curl-examples/ –

+0

上午在Windows服务器2008 R2上运行PHP。 php_curl扩展已启用。不知道这是否有帮助。 – rm65453

相关问题