PDA

Просмотр полной версии : URLLoader. проблема с url сервра (или нет??).


ramanchik
19.01.2008, 17:00
здравствуйте. пытаюсь обмениваться данными с сервером, но не очень получается. точнее совсем не получается.

сервер на Java (сервлет). Принимает данные через POST и возвращает какой-нибудь ответ. До этого проверял на as2 -всё работало, и работает до сих пор. Пытаюсь сделать на AS3 - не выходит. вот код AS3 (за основу был взят какой-то пример):

import mx.core.Application;
import mx.modules.ModuleLoader;
var resultVars:URLLoader = new URLLoader();

var dataToSave:XML = <gamescore>
<username>user</username>
<score>234234</score>
</gamescore>;


public function snd(){
var url:String = "http://localhost/XXX/yyy";
var request:URLRequest = new URLRequest(url);
request.data = dataToSave;
request.contentType = "text/xml";
request.method = URLRequestMethod.POST;

var loader:URLLoader = new URLLoader();
loader.addEventListener( Event.COMPLETE, handleResponse );
loader.load(request);
}

private function handleResponse( event:Event ):void {
try {
var success:String = new String( event.target.data );
this.message.text = success;
} catch ( e:TypeError ) {
this.message.text = "Could not parse XML response from server.";
}
}

snd() вызывается нажатием на кнопку. но вместо отправки запроса на сервер (до сервера даже не доходит - логи чистые), выкидывает окошко с ошибкой.

Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: http://localhost/XXX/yyy
at btnandfld/snd()
at btnandfld/___Button1_click()


если сделать url="http://localhost/XXX", то ошибки не возникает - загружается текст странички index.htm, которая лежит по этому адресу. но это понятное дело, не годится :)

где-то наткнулся на упоминание о запрете на загрузку из других доменов, но что-то не разобрался что к чему...

в чём может быть проблема??

etc
19.01.2008, 18:43
Проблема в сервере.

ramanchik
19.01.2008, 19:37
хм... с чего бы ей там быть?? да, и собственно, если "проблема в сервере", то в чём именно проблема выражается??

вот этот код-заглушка, сейчас работает - только, что специально проверил. сервер отвечает, логи на сервере тоже пишутся.

var sendVars:LoadVars = new LoadVars();
var resultVars:LoadVars = new LoadVars();

sendButton.onPress = function(){
sendVars.data = sourceArea.text;
sendVars.sendAndLoad(directionField.text, resultVars, "POST");
}

resultVars.onLoad = function(ok){
if (ok) {
receiverArea.text = resultVars.data;
} else {
receiverArea.text = "ОШИБКА";
}
}

повторюсь: до сервера запрос даже не доходит. т.к. первое, что делает сервер при запуске - это пишет "старт" в лог. а в логах ничего нет.

etc
19.01.2008, 20:12
Значит проблемы с security. Настройка локального доступа описана в FAQ.

2morrowMan
20.01.2008, 03:58
Попробуй так:

...
request.data = dataToSave.toXMLString();
...

ramanchik
20.01.2008, 13:01
переписал с нуля код, после чего сервер начал на него как-то реагировать. хотя и в нём ещё оказалась небольшая проблема с обработкой POST.
в общем, спасибо всем за внимание и помощь - разобрался. :)