我正在尝试使用Retrofit将数据修补到我的服务器(REST API春季)。

我正在使用改造1.9.0。

D/Retrofit: ---> HTTP PATCH http://myserver/...
....
D/Retrofit: ---> END HTTP (220-byte body)
D/Retrofit: ---- ERROR http://myserver/...
D/Retrofit: java.net.ProtocolException: Unknown method 'PATCH'; must be one of [OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE]
    at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:665)
    at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:37)
    at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)
    at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
    at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
    at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    at retrofit.Platform$Android$2$1.run(Platform.java:142)
    at java.lang.Thread.run(Thread.java:856)
D/Retrofit: ---- END ERROR


我不知道该怎么解决。有什么想法吗 ?

最佳答案

查看改造文档,它似乎在2.0及更高版本中受支持。否则,更新您的gradle依赖项以使用:

dependencies {
    compile 'com.squareup.retrofit:retrofit:1.9'
    compile 'com.squareup.okhttp:okhttp:2.0.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
}


问题是内置的HttpUrlConnection。您需要使用
OkHttp或Apache HttpClient代替。

我的建议是更新到更新版本,避免麻烦。

关于java - 改进:java.net.ProtocolException:未知方法“PATCH”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36925896/

10-13 00:03