Problem is that the Java HTTPUrlConnection
does not support HTTP.PATCH.
So I found a guide that did an implementation of delete with with a body. But I'm receiving HTTP/1.1 400 Bad Request
I arrived at this:
* Import compile("org.apache.httpcomponents:httpclient:4.3.1")
Method:
@SneakyThrows
public void firebasePatch(final PARAM p) {
new TaskRunner() {
@Override
public void command() throws Throwable {
final HttpClient httpClient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 10000);
PARAM p2 = p;
String callUrl = url+".json"+"?auth="+firebaseAuth;
HttpPatch httpPatch = new HttpPatch(callUrl);
httpPatch.addHeader("Accept", "*/*");
httpPatch.addHeader("Content-Type", "application/json");
// httpPatch.addHeader("auth", firebaseAuth);
String patchString = "{'userwallposts': {'ame_lector_dk': [{'wallPostUrl': '/wallposts/1','createdByLink': '',"+
"'summary': 'blah gik sig ikke en tur, og købte blah med hjem','createdDate': '20140126220550','comments': '2',"+
"'title': '1Blah blah blah','createdBy': 'PATCHED!','picture': 'http://images6.alphacoders.com/316/316963.jpg'}]}}";
StringEntity entity = new StringEntity(patchString, "UTF-8");
entity.setContentType("application/json");
httpPatch.setEntity(entity);
HttpResponse response = httpClient.execute(httpPatch);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200 ? true : false) {
// ok
System.out.println("patch complete");
} else {
System.out.println(response.getStatusLine());
}
}
}.run(nonBlock, exceptionHandling);
}
I'v checked that the Url+method works in Advanced Rest client, can't figure out why my Spring boot project doesn't get the same output, any help will be greatly appreciated.
HttpClient
, but that doesn't explain the bad request. – NakashimaRestTemplate
supports PATCH since Spring 3.2 (but you have to use the right client library). – Nakashima