php прокси для вызова api flash twitter (с динамическим массивом get)


Я придумал этот проект Twitter во flash, и как только я закончил и попытался разместить его в Интернете, я столкнулся с ошибкой в песочнице. Из того, что я прочитал, похоже, что мне просто нужно настроить прокси-файл php. Что я понимаю и понимаю. Все учебные пособия, которые я смог найти, были для простых URL-адресов, в которых не передавались данные GET. Для моего проекта данные GET являются динамическими, поэтому я не могу просто указать установленный URL-адрес в php-прокси, и я недостаточно хорошо понимаю php, чтобы понять, как получить get данные в URL-адрес прокси-сервера.. итак, вот что я знаю, как редактировать в Flex: enter image description here

Вот полный пример вызова 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 "".
Author: brybam, 2011-04-22

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.

 2
Author: drkstr, 2011-04-22 16:30:55