Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.05.2011, 14:52
queit вне форума Посмотреть профиль Отправить личное сообщение для queit Найти все сообщения от queit
  № 1  
Ответить с цитированием
queit

Регистрация: May 2011
Сообщений: 5
Question авторизация в web-сервисе

Доброго времени суток, сообщество.
Ситуация следующая: есть web-сервис, при удачном обращении к нему выдается xml.
Для обращения нужен логин и пароль. Пишу следующий код:

Код AS3:
import mx.rpc.soap.*;
import mx.core.*;
import mx.rpc.events.*;
import fl.data.DataProvider;
 
var myWebService = new WebService();
 
myWebService.addEventListener("load", loadDone);
 
myWebService.setCredentials("WebService","Bru#t_a4T5-ok78");
 
myWebService.loadWSDL("http://62.76.65.113/ED/ws/WebPub.1cws?WSDL");
 
function loadDone(evt:LoadEvent) {
 
	myWebService.addEventListener(FaultEvent.FAULT, wsError);
	myWebService.addEventListener(ResultEvent.RESULT, wsResult);
	myWebService.send();
 
}
 
function wsError(evt:FaultEvent) {
	MyLabel.text = "Error";
	trace(evt.message.toString());
}
 
function wsResult(evt:ResultEvent) {
	var xml:XML=XML(evt.result);
	var dp:DataProvider=new DataProvider(xml);
	MyLabel.text = "Success";
	MyRes.dataProvider=dp;
}
В итоге получается, что myWebService.setCredentials("WebService","Bru#t_a4T5-ok78"); вообще не устанавливает значения. И авторизация вываливается в ошибку.
Подскажите, как передать параметры авторизации в веб-сервис? Если ли другой метод авторизации (нашел http-авторизацию, но как работает не могу понять)?
Буду признателен за помощь.


Последний раз редактировалось queit; 10.05.2011 в 15:13.
Старый 10.05.2011, 15:11
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Отредактируйте свой пост и оформите код тегами [as3][/as3].

Старый 10.05.2011, 15:13
queit вне форума Посмотреть профиль Отправить личное сообщение для queit Найти все сообщения от queit
  № 3  
Ответить с цитированием
queit

Регистрация: May 2011
Сообщений: 5
(2) сделал

Отредактировал

попробовал другой метод - "Базовая http-авторизация".
Получилось следующее:
Код AS3:
import mx.rpc.soap.*;
import mx.core.*;
import mx.rpc.events.*;
import fl.data.DataProvider;
import mx.utils.Base64Encoder;
 
var myWebService = new WebService();
//"http://svr-dist-01.nsaem.ru/ED/ws/WebPub.1cws?WSDL"
myWebService.wsdl = "http://62.76.65.113/ED/ws/WebPub.1cws?WSDL";
 
myWebService.addEventListener("load", loadDone);
 
var encoder:Base64Encoder = new Base64Encoder(); 
encoder.insertNewLines = false; 
encoder.encode("WebService:Bru#t_a4T5-ok78"); 
myWebService.httpHeaders = {AUTHORIZATION : "Basic " + encoder.toString()};
 
myWebService.loadWSDL();
 
function loadDone(evt:LoadEvent) {
 
	myWebService.addEventListener(FaultEvent.FAULT, wsError);
	myWebService.addEventListener(ResultEvent.RESULT, wsResult);
	myWebService.send();
 
}
 
function wsError(evt:FaultEvent) {
	MyLabel.text = "Error";
	trace(evt.message.toString());
}
 
function wsResult(evt:ResultEvent) {
	var xml:XML=XML(evt.result);
	var dp:DataProvider=new DataProvider(xml);
	MyLabel.text = "Success";
	MyRes.dataProvider=dp;
}
Выдает ошибку:
Error opening URL 'http://62.76.65.113/ED/ws/WebPub.1cws?WSDL'
что бы это могло значить? как исправлять, не могу понять...

Добавлено через 17 часов 4 минуты
может какой-то прокси нужно использовать? подскажите, плиз...


Последний раз редактировалось udaaff; 10.05.2011 в 16:04.
Старый 12.05.2011, 13:25
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А без флексовых сервисов вы можете вообще туда законектится? Если IP настоящий, то сервиса такого либо вообще нет, либо с сервером проблемы... И, если чесно, я не уверен, как у флекса с basic авторизацией. Попробуйте просто URLLoader'ом послать запрос. Технически, вы почти все правильно сделали, только у URLLoader заголовки добавляются используя специальный класс URLRequestHeader (добавляется соотвественно к URLRequest, который вы посылаете).
__________________
Hell is the possibility of sanity

Старый 12.05.2011, 13:34
queit вне форума Посмотреть профиль Отправить личное сообщение для queit Найти все сообщения от queit
  № 5  
Ответить с цитированием
queit

Регистрация: May 2011
Сообщений: 5
спасибо что откликнулись и ответили ;-)
да, сервис доступен: если я в брайзере набираю http://62.76.65.113/ED/ws/WebPub.1cws?WSDL , а затем логин и пароль, то получаю xml-ку. Таким образом, с сервером проблем нет и IP-адрес нормальный (правильный, существующий и доступный).
На счет basic авторизации у меня тоже большие сомнения.
Сейчас попробую URLLoader'ом послать запрос, посмотрим что получится.

Старый 12.05.2011, 13:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Мне этот сервис не отвечает. В смысле умирает по таймауту. traceroute говорит, что после выхода за пределы страны (местного провайдера), просто либо не может его найти / либо не существует такой вообще.
Может это у вас как-то так хитро настроена сетка и это какой-то внутренний IP?

EDIT: А хотя нет... ip зарегистрирован где-то в Москве. Но в любом случае общаться с внешним миром не хочет
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 12.05.2011 в 13:47.
Старый 12.05.2011, 14:11
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 7  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
И, если чесно, я не уверен, как у флекса с basic авторизацией.
Как и везде. Заголовок Authorization должен быть разрешен в файле политики. Либо оставить авторизацию на совести браузера.

Старый 12.05.2011, 14:42
queit вне форума Посмотреть профиль Отправить личное сообщение для queit Найти все сообщения от queit
  № 8  
Ответить с цитированием
queit

Регистрация: May 2011
Сообщений: 5
(6) я его вижу из своей подсети, вроде бы все нормально. все загружается. Возможно и сетка хитро настроена.
можно конечно попробовать совсем из-вне...возможно и не будет загружаться.

я попробовал URLLoader.В общем, всё получается. Вот код:
Код AS3:
import flash.display.Sprite;
import flash.events.*;
import mx.rpc.events.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import mx.utils.Base64Encoder;
 
var loader:URLLoader = new URLLoader();
var req:URLRequest=new URLRequest("http://62.76.65.113/ED/ws/WebPub.1cws?WSDL");
var headerRequests:Array=new Array(1);
req.method=URLRequestMethod.POST;
req.data = Math.random();
 
var encoder64:Base64Encoder = new Base64Encoder();
encoder64.encode("WebService:Bru#t_a4T5-ok78");
 
var credentials:String=encoder64.toString();
headerRequests[0]=new URLRequestHeader("Authorization","Basic "+credentials);
req.requestHeaders=headerRequests;
 
//loader.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS,onStatust);
loader.addEventListener(Event.COMPLETE,this.onComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR,this.onError);
 
loader.load(req);
 
function onComplete(event:Event):void {
	trace("COMPLETE");
	trace(event.target.data);
}
 
function onError(event:IOErrorEvent):void {
	trace("IO_ERROR");	
	trace(event.text);
}
Но есть некоторые вопросики.
1. Строка
Код AS3:
req.data = Math.random();
меня очень смущает, при этом в результате этих действий формируемый запрос получается уникальным, и браузер не будет брать ответ из своего кэша.
Вопрос в том: что можно ли как-нибудь красивее сделать чтобы каждый раз формировался новый запрос???
2. Не могу сообразить, как сделать проверку доступности url? есть способ слушать HTTPStatusEvent.HTTP_RESPONSE_STATUS. как пользоваться не знаю...если подскажите, то буду очень признателен.

Спасибо за ответы и поддержку. Особенное wvxvw :-)

Добавлено через 38 секунд
(7) Можете подробнее рассказать, желательно с примерчиком?

Старый 12.05.2011, 16:20
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
ping / traceroute ну или GET. Но это конечно не стопроцентно даст ответ о существовании сервера, только о тогда, когда сервер желает отвечать на соответствующий вид запросов. А про ip всегда можно узнать с помощью всяческих сервисов типа whois / ip lookup.
Что до рандомальных параметров в запросе - если сервис согласен принимать ту же самую информацию через POST - посылайте через POST, он не кешируется. Если нет - ну, тогда, боюсь что в общем случае никак. Некоторые особо находчивые браузеры просто даже запрос не пошлют, если он такой же, как предыдущий.
__________________
Hell is the possibility of sanity

Старый 12.05.2011, 16:32
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Вопрос в том: что можно ли как-нибудь красивее сделать чтобы каждый раз формировался новый запрос???
Через те же заголовки HTTP. Cache-Control

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.