Ok。試行錯誤の末、ようやく完成。デフォルトでjava.net.HttpURLConnection
は PATCH のようなカスタム リクエスト メソッドがサポートされていないため、そのエラーが発生しています。commons-httpclient
したがって、そのようなリクエストメソッドをサポートするようなサードパーティのライブラリを使用する必要があります。だから私commons-httpclient(now it is named as apache-httpcomponents)
はそれをPATCHリクエストメソッドで動作させるために注入しました。
以下は、それを機能させるために行った変更です。
最初に grails に依存関係を追加しますBuildConfig.groovy
runtime "org.apache.httpcomponents:httpclient:4.3.6"
ソリューション#1
手動でオブジェクトを作成したい場合:
RestTemplate restTemplate=new RestTemplate()
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
def rest=new RestBuilder(restTemplate)
def resp = rest.patch("$URL"){
header 'Authorization', "Bearer $accessToken"
}
ソリューション#2
Grails-Spring インジェクションの使用:
以下の構成を追加しますresources.groovy
import grails.plugins.rest.client.RestBuilder
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory
import org.springframework.web.client.RestTemplate
beans={
httpClientFactory (HttpComponentsClientHttpRequestFactory)
restTemplate (RestTemplate,ref('httpClientFactory'))
restBuilder(RestBuilder,ref('restTemplate'))
}
クラスに挿入restBuilder
します。
class MyRestClient{
def restBuilder
....
def doPatchRequest(){
def resp=restBuilder.patch("$API_PATH/presentation/publish?id=$presentationId"){
header 'Authorization', "Bearer $accessToken"
};
//do anything with the response
}
}
これが誰かに役立つことを願っています。