2015-09-08 3 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

Я попробую, но его правительственный веб-сайт, будет удивлен, если они смогут предоставить любую полезную информацию. Вы думаете, что это куки-файлы, которые они размещают после успешного поиска, который позволяет моему коду работать, пока браузер не будет закрыт? – rm65453

+0

Я не говорю о куки-файлах, но сеансах. Различные понятия! :) Кроме того, вы можете наткнуться на многие юридические вопросы, если попытаетесь взять правительственные данные без правильных разрешений ... обратите внимание! –

+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

Просто отправил электронное письмо поставщику. Можно ли отправить фиктивный запрос в фоновом режиме с помощью curl, прежде чем фактический код будет запущен в php? что по существу решит мою проблему. – rm65453

+0

завиток, безусловно, можно запустить из кли. если вы оказались на linux: http://www.thegeekstuff.com/2012/04/curl-examples/ –

+0

am running php на сервере Windows 2008 r2. расширение php_curl включено. не уверен, что это помогает. – rm65453

Смежные вопросы