java.net.URISyntaxException的解決辦法__javaEE

來源:互聯網
上載者:User

近日在用HttpClient訪問抓取匯率時,為了省力,直接採用

String url = "http://api.liqwei.com/currency/?exchange=usd|cny&count=1"; HttpClient client = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url); HttpResponse response = client.execute(httpget);
以前用這種方法都沒有問題,但這次卻報如下錯誤:
java.net.URISyntaxException: Illegal character in query at index 44

 

尋找了一些網上資料,說地址中涉及了特殊字元,如‘|’‘&’等。所以不能直接用String代替URI來訪問。必須採用%0xXX方式來替代特殊字元。但這種辦法不直觀。所以只能先把String轉成URL,再能過URL產生URI的方法來解決問題。代碼如下

URL url = new URL(strUrl); URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null); HttpClient client = newDefaultHttpClient(); HttpGet httpget = new HttpGet(uri);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.