2011-04-03 69 views
1

我试图调用Web服务并解析返回的XML,所以我调用网址是:的getInputStream抛出异常

http://192.168.1.12/cr.ws/CarCategories.asmx/CarCategoryComparatorRQ?IdUser=1076&IdCurrency=1&IdLanguage=1&IdCarCategory=0&IdPickupRentCarAgencies=3&IdReturnRentCarAgencies=3&PickupDate=6/4/2011&ReturnDate=9/4/2011&Supplier=Prima%20Rent%20a%20Car&b=prima 

在浏览器中我获得所需的响应:

<CarCategoryComparatorRS> 
<CarCategory> 
<IdCar>22</IdCar> 
<IdCarCategory>22</IdCarCategory> 
<Supplier>AvantGarde Rent a Car</Supplier> 
<PickupRentCarAgencies>Tunis; Aéroport de Tunis-Carthage</PickupRentCarAgencies> 
<IdPickupRentCarAgencies>5</IdPickupRentCarAgencies> 
<ReturnRentCarAgencies>Tunis; Aéroport de Tunis-Carthage</ReturnRentCarAgencies> 
<IdReturnRentCarAgencies>5</IdReturnRentCarAgencies> 
<IdUser>705</IdUser> 
<Title>Catégorie A [ex:Kia Rio;Renault Symbol]</Title> 
<IdCurrency>1</IdCurrency> 
<ImageUrl>Car-22-20090521-125545.jpg</ImageUrl> 
<MemberReductionValue>0</MemberReductionValue> 
<Rate>150</Rate> 
<DelayRate>0</DelayRate> 
<ReductionValue>135</ReductionValue> 
<DayRate>45</DayRate> 
<Reduction>10%</Reduction> 
<AccompteValue>67.500</AccompteValue> 
<Accompte>50</Accompte> 
<TotalRate>0000135000</TotalRate> 
</CarCategory> 
</CarCategoryComparatorRS> 

但此功能trows java.io.FileNotFoundException

protected InputStream getInputStream() { 
     try { 
      return feedUrl.openConnection().getInputStream(); 
     } catch (IOException e) { 
      throw new RuntimeException(e); 
     } 

请帮助我,我浪费了几个小时寻找,但没有:(

谢谢。

回答

3

错误是由这个参数中的空格造成的:“Supplier = Prima Rent a Car”,所以我用UrlEncoder.encode("Supplier=Prima Rent a Car")取代了这个参数,它工作正常。

+0

此方法已弃用。一个应该使用URLEncoder.encode(String,String),其中第二个参数是编码(例如“UTF-8”) – perene 2013-09-17 09:32:27

0

如果您在设备的浏览器地址栏中输入该网址,是否会收到任何内容?

+0

是的,我得到了我前面提到的XML。 – Houssem 2011-04-04 07:32:37

0

它看起来像你试图请求本地机器或局域网上的地址。你在android设备上请求这个吗?我的猜测是你需要在不同的接口上在机器上运行你的服务器,或者打开到所需端口的连接。

+0

实际上该服务在真实服务器上运行,但出于安全原因,我通过本地url更改了地址。 – Houssem 2011-04-04 07:32:59

0

我认为你的网址被解释为一个文件的url。

什么记录你的网址,你打电话之前openConnection作为一个全面的检查:

Log.e("MyApp", feedUrl); 

关于第二个想法,你可以发布logcat的输出?我对你的代码如何抛出FileNotFoundException表示怀疑。

+0

最后我解决了这个问题,在那个URL中导致这个错误的参数,所以对于这个参数我使用UrlEncoder.encode(参数),它的工作方式就像一个魅力 – Houssem 2011-04-04 07:38:31

+0

太棒了。我可以问问哪些角色导致了这个问题? – 2011-04-04 14:13:02

+0

此参数:“供应商= Prima Rent a Car”单词之间的空格似乎是原因 – Houssem 2011-04-05 10:40:18