Xmlhttprequest 无法从flex中的xml服务获取当前数据,因为它返回错误消息
我试图从free.worldweatheronline.com的xml web服务中获取数据。首先,我给出城市的名称。如果在web服务中找到城市,它将返回如下数据:Xmlhttprequest 无法从flex中的xml服务获取当前数据,因为它返回错误消息,xmlhttprequest,flex4.5,httpservice,Xmlhttprequest,Flex4.5,Httpservice,我试图从free.worldweatheronline.com的xml web服务中获取数据。首先,我给出城市的名称。如果在web服务中找到城市,它将返回如下数据: <data><request><type>City</type><query>Hyderabad, india</query></request><current_condition><observation_time>06:
<data><request><type>City</type><query>Hyderabad, india</query></request><current_condition><observation_time>06:04 AM</observation_time><temp_C>34</temp_C><temp_F>92</temp_F><weatherCode>113</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png</weatherIconUrl><weatherDesc>Sunny</weatherDesc><windspeedMiles>14</windspeedMiles><windspeedKmph>22</windspeedKmph><winddirDegree>230</winddirDegree><winddir16Point>SW</winddir16Point><precipMM>0.0</precipMM><humidity>50</humidity><visibility>10</visibility><pressure>1011</pressure><cloudcover>0</cloudcover></current_condition>
<s:HTTPService id="weatherService"
url="{BASE_URL}"
resultFormat="object"
result="weatherService_resultHandler(event)"
fault="weatherService_faultHandler(event)"
showBusyCursor="true">
<s:request xmlns="">
<q>{cityName.text.toString()}</q>
<format>{FORMAT}</format>
<num_of_days>{NUMBER_OF_DAYS}</num_of_days>
<key>{API_KEY}</key>
</s:request>
</s:HTTPService>
<data><error><msg>Unable to find any matching weather location to the query submitted!</msg></error></data>
如果找不到城市,则返回如下xml数据:
<data><request><type>City</type><query>Hyderabad, india</query></request><current_condition><observation_time>06:04 AM</observation_time><temp_C>34</temp_C><temp_F>92</temp_F><weatherCode>113</weatherCode><weatherIconUrl>http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png</weatherIconUrl><weatherDesc>Sunny</weatherDesc><windspeedMiles>14</windspeedMiles><windspeedKmph>22</windspeedKmph><winddirDegree>230</winddirDegree><winddir16Point>SW</winddir16Point><precipMM>0.0</precipMM><humidity>50</humidity><visibility>10</visibility><pressure>1011</pressure><cloudcover>0</cloudcover></current_condition>
<s:HTTPService id="weatherService"
url="{BASE_URL}"
resultFormat="object"
result="weatherService_resultHandler(event)"
fault="weatherService_faultHandler(event)"
showBusyCursor="true">
<s:request xmlns="">
<q>{cityName.text.toString()}</q>
<format>{FORMAT}</format>
<num_of_days>{NUMBER_OF_DAYS}</num_of_days>
<key>{API_KEY}</key>
</s:request>
</s:HTTPService>
<data><error><msg>Unable to find any matching weather location to the query submitted!</msg></error></data>
在上面代码的cityNameData.text之前,但它给出的错误为
那个未定义的属性或类似的东西,若xml中不存在该属性,它将抛出错误 //另请注意,无需指定根名称即可访问此子节点 //您需要像这样检查XML中的属性是否可用
if(event.result is XML)
{
var errorXML:XML = event.result as XML;
if(errorXML && errorXML.hasOwnPerperty("error") )
{
if(errorXML.error && errorXML.error.hasOwnProperty("msg"))
{
var yourErrorMsg:String = errorXML.error.msg;
}
}
}
else if(event.result is Object)
{
var result_weather_data:Object = event.result;
if(result_weather_data && result_weather_data.hasOwnProperty('data'))
{
if(result_weather_data.data && result_weather_data.data.hasOwnProperty("request"))
{
if(result_weather_data.data.request && result_weather_data.data.request.hasOwnProperty("query"))
{
cityNameData.text = result_weather_data.data.request.query;
}
else
{
trace("query property not exists in result_weather_data.data.request Object");
}
}
else
{
trace("request property not exists in result_weather_data.data Object");
}
}
else
{
trace("result_weather_data is NULL or data property not exists in result_weather_data Object");
}
}
亲爱的,首先它不工作,它说对象类型不能在上转换为XML{var errorXML:XML=result_weather_data;)并说一个术语没有属性或类似的东西基本上如果你的服务得到正确的结果意味着你的类型是Object,否则你得到的结果类型是XML,所以首先需要检查我上面提到的类型:)亲爱的,我是按照你的方式做的,但如果event.result是XML,那么它会说{Error#1010:一个术语未定义且没有属性。}在{cityNameData.text=result\u weather\u data.data.request.query;}行上,我如何再次解决这个问题……Error#1010:意味着在我们访问需要检查的对象中的任何属性(in,hasOwnProperty())之前,您会询问该对象中的属性不可用成功后,您可以使用它。如果属性不可用,服务器响应结果会出现问题。您必须检查服务器代码。如果您想查看该对象中的所有属性,您可以使用ObjectUtil.toString(结果\天气\数据),它将打印所有属性。在您的标题中,您是指正确的还是当前的?