【问题标题】:java.lang.IllegalArgumentException when using HttpClient [duplicate]使用 HttpClient 时出现 java.lang.IllegalArgumentException [重复]
【发布时间】:2016-05-12 12:11:18
【问题描述】:

我在使用 HttpClient 时收到此错误。我看过很多来自 SO 的答案,但似乎没有一个回答我的。 在 URL 中我只对消息进行了 URLEncoded。我无法为世界找出非法字符。其他答案有一个特殊字符,如“{”或“|”在网址中。我的里面没有。然而我得到了例外。我已经束手无策了。

这是堆栈跟踪:

java.lang.IllegalArgumentException: Illegal character in query at index 95:     http://api.alerts.sinfini.com/v3/index.php?method=sms&api_key=XXXXXXXX&to=1234567890&sender=SIDEMO&message=Oyeseva+Registration+Verification+Code%3A+366509&format=json&custom=1,2&flash=0
    at java.net.URI.create(URI.java:859)
    at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:69)
    at com.oyeseva.messaging.SMSSender.sendSMS(SMSSender.java:58)
    at com.oyeseva.messaging.SMSSender.send(SMSSender.java:104)
    at com.oyeseva.messaging.alerts.SendMesssageOrEmail.alertIsAnSMS(SendMesssageOrEmail.java:71)
    at com.oyeseva.messaging.alerts.SendMesssageOrEmail.run(SendMesssageOrEmail.java:42)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

编辑:我使用 URLEncoder 对整个 URL 进行编码,但它会因错误而窒息。还尝试仅对查询进行编码..说该方法丢失了...该方法在 URL 中是 sms。

【问题讨论】:

    标签: java character illegalargumentexception


    【解决方案1】:

    在我看来这是尝试将 API 密钥解析为适合 api_key 使用的类型的值,但无法将 XXXX 解析为该类型。

    【讨论】:

      【解决方案2】:

      首先尝试URLEncoder 类来编码您的网址。然后将该 url 放入 HTTPClient 类中。

      String safeUrl = URLEncoder.encode("stringurl", "UTF-8");
      

      How URLEncoder Encodes the URL

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 2017-10-02
        • 2014-02-23
        • 1970-01-01
        • 2011-12-02
        • 1970-01-01
        相关资源
        最近更新 更多