终止。这里是我的简单代码,如果从php或任何其他客户端调用,那么它工作正常,然后adobe air。同样的代码也适用于从SWF调用,也有用于项目其他部分的氟FX代码,但是它没有做任何事情来打破这一点。Adobe AIR和Web服务呼叫。错误#1085错误:元素类型“br”必须以匹配结束标记“</br>”
我确实发现了所有POST调用都以某种方式更改为GET的一件事,这真让我感到惊讶。我很乐意为此得到答案。在此先感谢大家。以下是与我的Web服务几乎相同的代码。 AIR代码就在它的下面。
[WebMethod(EnableSession = true)]
public bool Authenticate(string UserName,string Password)
{
try
{
if (Membership.ValidateUser(UserName, Password)){
FormsAuthentication.SetAuthCookie(UserName, true);
return true;
}
return false;
}
catch (Exception ex)
{
return false;
}
}
我从Adobe AIR代码如下
var ws:WebService = new WebService();
ws.wsdl="http://mysite.com/myservice.asmx?WSDL";
ws.useProxy=false;
ws.addEventListener(LoadEvent.LOAD,onWSDLLoad);
ws.loadWSDL();
ws.Authenticate.addEventListener(ResultEvent.RESULT,resultHandler);
ws.Authenticate.addEventListener(FaultEvent.FAULT,onLoginFaultHandler);
ws.Authenticate("usrname","password");
protected function onLoginFaultHandler(event:FaultEvent):void
{
Alert.show('Login Failed with messsage\r\n[ '+event.fault.faultString+' ]');
/* Error #1085: The element type "br" must be terminated
by the matching end-tag "</br>". */
/* checking the content value of fault event shows
same out put as http://mysite.com/myservice.asmx */
}
protected function onLoginResultHandler(event:ResultEvent):void
{
/* on success code */
}
这家伙告诉我们http://verveguy.blogspot.com/2008/07/truth-about-flex-httpservice.html页
- 所有HTTP GET请求被剥离头下面的调用。它不在Flex堆栈中,因此它可能是底层的Flash播放器运行时。
- 所有具有“application/x-www-form-url-encoded”以外的内容类型的HTTP GET请求都变成POST请求
- 所有没有实际发布数据的HTTP POST请求都变成GET请求。请参阅1和2/
- 所有HTTP PUT和HTTP DELETE请求都转换为POST请求。这似乎是Flash播放器坚持使用的浏览器限制。
我确实看到上面的请求变成了GET,但是我确实有post值。或者如果这些不是由Web服务对象发送或记录的?
有趣的是,我发现所有的调用都转向GET,而不是将它们作为POST调用发送。有没有办法强制它对Web方法进行POST调用? – 2012-01-09 05:06:22
你在哪里指定你想从webservice调用webmethod'Authenticate'?试试这个.http://www.giantflyingsaucer.com/blog/?p = 26 – naveen 2012-01-09 05:38:12
我想,ws.Authenticate会这样做。而且它并不仅限于这种方法。所有方法都失败。具有相同的错误。 – 2012-01-09 06:15:23