我使用okhttp与微服务进行交互,昨晚出现了java.lang.Illegal ArgumentException: unexpected url: http://dd.zydtrip.net:7080/api/device/bike/heartbeat
这样的错误
服务正常运行30分钟后引发异常。此网址应该是正常的。目前无法复制该异常。为什么抛出此异常?我使用的版本是3.3.1
return new Request.Builder().url(url)
.addHeader("Content-Type", contentType)
.post(RequestBody.create(MediaType.parse("charset=utf-8"), reqMsg.encode()))
.build();
错误是:
23:18:36,105 ERROR BikeMessageReceiver:41 - unexpected url: http://dd.zydtrip.net:7080/api/device/bike/heartbeat
java.lang.IllegalArgumentException: unexpected url: http://dd.zydtrip.net:7080/api/device/bike/heartbeat
at okhttp3.Request$Builder.url(Request.java:141)
at com.ziytek.bike.access.utils.ServiceInteract.getRequest(ServiceInteract.java:76)
at com.ziytek.bike.access.utils.ServiceInteract.sendMessage(ServiceInteract.java:106)
at com.ziytek.bike.access.service.DeviceService.sendHeartBeat(DeviceService.java:98)
at com.ziytek.bike.access.impl.BikeMessage300Receiver.handleMessageSpecific(BikeMessage300Receiver.java:58)
at com.ziytek.bike.access.BikeMessageReceiver.handleMessage(BikeMessageReceiver.java:28)
at com.ziytek.message.exchange.impl.AbstractUMForwarder.handleRequestMessage(AbstractUMForwarder.java:140)
at com.ziytek.message.exchange.impl.AbstractUMForwarder.forwardMessage(AbstractUMForwarder.java:53)
at com.ziytek.message.exchange.impl.AbstractUMForwarder$MessageTask.run(AbstractUMForwarder.java:97)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:0)
如果您使用的是旧版本(3.3.1),则很难解决问题,因为最新版本现在是3.12.1,而Request.java
的源代码已经发生了很大变化。
在当前的迭代中,该类不再抛出unexpected url
错误消息。
源代码: https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/Request.java#L141
无论如何,我在http://dd.zydtrip.net:7080/api/device/bike/heartbeat
上为您做了一个URL验证,它似乎是有效的。这是通过org.apache.commons.validator.UrlValidator
类完成的。
我的建议是确保您正在使用最新的库,然后重新运行以查看结果。它将使调试更加容易。