終止。這裏是我的簡單代碼,如果從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