2011-04-03 72 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