php прокси для вызова api flash twitter (с динамическим массивом get)
Я придумал этот проект Twitter во flash, и как только я закончил и попытался разместить его в Интернете, я столкнулся с ошибкой в песочнице. Из того, что я прочитал, похоже, что мне просто нужно настроить прокси-файл php. Что я понимаю и понимаю. Все учебные пособия, которые я смог найти, были для простых URL-адресов, в которых не передавались данные GET. Для моего проекта данные GET являются динамическими, поэтому я не могу просто указать установленный URL-адрес в php-прокси, и я недостаточно хорошо понимаю php, чтобы понять, как получить get данные в URL-адрес прокси-сервера..
итак, вот что я знаю, как редактировать в Flex:
Вот полный пример вызова api, который мне нужно было бы сделать:
http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=brybam&?page=1
А вот прокси-скрипт php, который был рекомендован онлайн:
<?php
$post_data = $HTTP_RAW_POST_DATA;
$header[] = "Content-type: text/xml";
$header[] = "Content-length: ".strlen($post_data);
$ch = curl_init( $_GET['url'] );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
if ( strlen($post_data)>0 ){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$response = curl_exec($ch);
$response_headers = curl_getinfo($ch);
if (curl_errno($ch)) {
print curl_error($ch);
} else {
curl_close($ch);
header( 'Content-type: ' . $response_headers['content-type']);
print $response;
}
?>
Хорошо, итак, приступая к работе, мне просто нужно превратить php-скрипт в файл, что-то вроде twitter.php и просто разместите его на моем домене. Затем я предполагаю, что в поле URL для настройки службы http в Flex поместите и повторно введите его как что-то вроде это:
http://mydomain.com/twitter.php?screen_name=brybam&?page=1
ИТАК, я спрашиваю, потому что мое понимание php очень ограничено, как именно я мог бы использовать приведенный выше скрипт и сделать его возможным для передачи
http://mydomain.com/twitter.php?screen_name=brybam&?page=1
С гибкостью и уметь принимать различные потенциальные аргументы?
Я думаю, что это может быть что-то вроде
$page = $_GET['page'];
$screen_name = $_GET['screen_name'];
В файле php, но я не уверен, куда мне следует помещать переменные, чтобы сделать их частью URL
Я уверен, что это торт, если вы знаете php, и это было бы потрясающе если бы кто-нибудь мог мне в этом помочь, спасибо!
РЕДАКТИРОВАТЬ: Я попробовал это, но получил ошибку (ошибка опубликована под тем, что я пробовал)
<?php
$page = $_GET['page'];
$screen_name = $_GET['screen_name'];
$url = $_GET['url'];
$post_data = $HTTP_RAW_POST_DATA;
$header[] = "Content-type: text/xml";
$header[] = "Content-length: ".strlen($post_data);
$ch = curl_init("'url'?screen_name='$screen_name'&?page='$page'");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
if ( strlen($post_data)>0 ){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$response = curl_exec($ch);
$response_headers = curl_getinfo($ch);
if (curl_errno($ch)) {
print curl_error($ch);
} else {
curl_close($ch);
header( 'Content-type: ' . $response_headers['content-type']);
print $response;
}
?>
Сообщение об ошибке:
The response is not a valid XML or a JSON string.
Error on line 1 of document : The element type "meta" must be terminated by the matching end-tag "". Nested exception: The element type "meta" must be terminated by the matching end-tag "".
1 answers
<?php
$post_data = $HTTP_RAW_POST_DATA;
$header[] = "Content-type: text/xml";
$header[] = "Content-length: ".strlen($post_data);
$screen_name = $_GET['screen_name'];
$page = $_GET['page'];
$url = "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=$screen_name&page=$page";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
if ( strlen($post_data)>0 ){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$response = curl_exec($ch);
$response_headers = curl_getinfo($ch);
if (curl_errno($ch)) {
print curl_error($ch);
} else {
curl_close($ch);
header( 'Content-type: ' . $response_headers['content-type']);
print $response;
}
?>
Хотя, если вы собираетесь вызывать больше, чем только один вызов api, вы можете рассмотреть возможность создания строки запроса в AS и просто прикрепить всю строку к концу домена.
Т.Е.
Вы бы передали что-то вроде "1/statuses/user_timeline.xml?имя_экрана=brybam&?страница=1" в один параметр.
И ваш php будет выглядеть так...
$query= $_GET['query'];
$url = "http://api.twitter.com/$query";
Или, что еще лучше, создайте свой собственный API сервиса это использует ваши собственные вызовы API, специфичные для вашего приложения. Таким образом, вам не нужно перестраивать SWF, если и когда изменится API twitter.