Проблема пробелов при использовании прокси php - PullRequest
0 голосов
/ 20 мая 2010

Я использую веб-прокси php с уже закодированным URL-адресом и получаю сообщение об ошибке неверного запроса, если у меня есть текст после% 20. Есть идеи, почему это происходит? Код веб-прокси, который я использую, является просто примером, который я взял из сервисов Yahoo:

<?php
// PHP Proxy example for Yahoo! Web services. 
// Responds to both HTTP GET and POST requests
//
// Author: Jason Levitt
// December 7th, 2005
//

// Allowed hostname (api.local and api.travel are also possible here)
define ('HOSTNAME', 'http://search.yahooapis.com/');

// Get the REST call path from the AJAX application
// Is it a POST or a GET?
$path = ($_POST['yws_path']) ? $_POST['yws_path'] : $_GET['yws_path'];
$url = HOSTNAME.$path;

// Open the Curl session
$session = curl_init($url);

// If it's a POST, put the POST data in the body
if ($_POST['yws_path']) {
 $postvars = '';
 while ($element = current($_POST)) {
  $postvars .= urlencode(key($_POST)).'='.urlencode($element).'&';
  next($_POST);
 }
 curl_setopt ($session, CURLOPT_POST, true);
 curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}

// Don't return HTTP headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

// Make the call
$xml = curl_exec($session);

// The web service returns XML. Set the Content-Type appropriately
//header("Content-Type: text/xml");

echo $xml;
curl_close($session);

?>

1 Ответ

0 голосов
/ 25 мая 2010

Оказалось, что проблема заключалась в том, что мне нужно было URL-кодировать параметр в моем URL-адресе, который содержал символы, которые могут нуждаться в кодировке URL-адреса, например, пробел. Значение yws_path уже было закодировано в url, но я думаю, что оно должно быть декодировано прокси и затем отправлено по запросу http. Без двойного кодирования части, где мне были нужны пробелы, мой запрос не передавался с% 20, а вместо этого был только пробел (по сути, приводящий к http-запросу, который не был должным образом закодирован в URL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...