Я пытался загрузить JSON из URL с именем пользователя / паролем в начале.
Таким образом, URL напоминает: http://username:password@www.myaddress.org.uk/api/profiles/
Я использую класс DataLoader из greensock, и он возвращает ошибку # 2032: Ошибка потока, если аутентификация включена, но загружается нормально, когда она отключена.
Я пытаюсь добавить URLRequestHeader 'Authorization', чтобы обойти эту проблему? Это лучший путь вперед?
Если это актуально, я занимаюсь разработкой с использованием FlashDevelop 4.0 / Flex SDK 4.5.1 на Windows 7 Enterprise.
Заранее спасибо!
Edit:
Я пытаюсь использовать заголовки аналогично этому сообщению: Flex 3 - как поддерживать HTTP-аутентификацию URLRequest? , но у меня нет особого успеха. Кодер base64, который я использую, отсюда: http://jpauclair.net/2010/01/09/base64-optimized-as3-lib/
2-е редактирование: последний код
_loader = new DataLoader(ENDPOINT, { onComplete:handleComplete, onError:handleError, onFail:handleFail } );
_loader.request.method = URLRequestMethod.POST;
_loader.request.data = new URLVariables("required=RandomData");
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(USER+':'+PASS);
var headerString:String = Base64.encode(bytes);
var header:URLRequestHeader = new URLRequestHeader('Authorization', 'Basic ' + headerString );
_loader.request.requestHeaders.push(header);
_loader.load();
crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy
SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
<allow-http-request-headers-from domain="*" headers="Authorization" />
</cross-domain-policy>
Редактировать 3
Я также пытался использовать URLLoader:
var urlRequest:URLRequest = new URLRequest(ENDPOINT);
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = new URLVariables("required=RandomData");
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(USER+':'+PASS);
var headerString:String = Base64.encode(bytes);
var header:URLRequestHeader = new URLRequestHeader('Authorization', 'Basic ' + headerString );
urlRequest.requestHeaders.push(header);
_urlLoader = new URLLoader(urlRequest);
_urlLoader.addEventListener(Event.COMPLETE, temp_handleComplete);
_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, temp_handleError);