簡體   English   中英

java.net.URISyntaxException:索引 177 處的查詢中存在非法字符

[英]java.net.URISyntaxException: Illegal character in query at index 177

我試圖通過由 Azure 共享的 nextLink 獲取 Azure 使用詳細信息。 當我試圖使 http 請求發生 URISyntaxException 時。

HttpClient httpclient = getHttpClient();
          
URIBuilder uriBuilder=new URIBuilder(url);
HttpGet httpGet = new HttpGet(uriBuilder.build());
HttpResponse httpResponse = httpclient.execute(httpGet);

這是下一個鏈接 url:

“https://management.azure.com/subscriptions/78c50b17-61fd-40cc-819c-4953586c7850/providers/Microsoft.Consumption/usageDetails?api-version=2019-11-01&$filter=properties/usageStart eq '202- 07-1' 和 properties/usageEnd eq '2020-07-30' &metric=actualcost&$expand=properties/meterDetails,properties/additionalInfo&sessiontoken=15:785628&$skiptoken=827CDTHDWI07C46616C7365730&skiptokenver=v1&id=2d790-d6675-4950d-cca98

我認為這是因為諸如?、& 和等字符。 在我的 URL 中:所以我嘗試使用:

URLEncoder.encode(myUrl, "UTF-8");

但在此之后,我遇到了協議異常。

我在這里錯過了什么嗎?

您的 URL 包含空格和單引號,這些應該是 URL 編碼的,就像您嘗試過的一樣。 但是,因為您嘗試對整個URL 進行 URL 編碼,所以您最終會得到以下結果:

https%3A%2F%2Fmanagement.azure.com%2Fsubscriptions%2F78c50b17-61fd-40cc-819c-4953586c7850%2Fproviders%2FMicrosoft.Consumption%2FusageDetails%3Fapi-version%3D2019-11-01%26%24filter%3Dproperties%2FusageStart+eq+%272020-07-1%27+and+properties%2FusageEnd+eq+%272020-07-30%27+%26metric%3Dactualcost%26%24expand%3Dproperties%2FmeterDetails%2Cproperties%2FadditionalInfo%26sessiontoken%3D15%3A785628%26%24skiptoken%3D827CDTHDWI07C46616C7365730%26skiptokenver%3Dv1%26id%3D2d790-d675-45d-89j56-3989w06cca

這不是有效的 URL。 您可以簡單地嘗試使用一種簡單的字符串替換形式:

myUrl = myUrl.replace(" ", "%20").replace("'", "%27");

如果這還不夠,您需要自己重建 URL,並且只對查詢參數值應用 URL 編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM