okhttp java.lang.Illegal ArgumentException: неожиданный URL - PullRequest
0 голосов
/ 11 января 2019

Я использовал okhttp для взаимодействия с микросервисами, а вчера вечером я получил такую ​​ошибку как java.lang.Illegal ArgumentException: unexpected url: http://dd.zydtrip.net:7080/api/device/bike/heartbeat

Исключение было сгенерировано через 30 минут после нормальной работы службы. Этот URL должен быть нормальным. Исключение не может быть воспроизведено в настоящее время. Зачем выбрасывать это исключение? Я использую версию 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)

1 Ответ

0 голосов
/ 11 января 2019

Сложно устранить проблему, если вы используете более старую версию (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

В любом случае, я проверил для вас URL на http://dd.zydtrip.net:7080/api/device/bike/heartbeat, и, похоже, он действителен. Это было сделано с использованием класса org.apache.commons.validator.UrlValidator.

Мое предложение было бы для вас убедиться, что вы используете последнюю библиотеку, а затем еще раз посмотреть, каковы результаты. Это облегчило бы отладку.

...