使用 REST API 和 Java Jersey 应用程序在 Wordpress 上发布 post
Publish post on Wordpress with REST API and Java Jersey application
我正在尝试使用 Jersey WebResource 对象在 Wordpress 站点上发布 post。 Wordpress 站点和 Java 应用程序都是本地的。我正在尝试这个:
String url = "http://localhost:81/testsite/wp-json/wp/v2/posts";
String myPostData = "{'title':'test','content':'bla bla bla'}";
Client client = Client.create();
WebResource webResource = client.resource(url);
webResource.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX"); //XXXXXX is the encoded user:password
webResource.header(HttpHeaders.CONTENT_TYPE, "application/json");
webResource.accept(MediaType.APPLICATION_JSON);
ClientResponse response = webResource.post(ClientResponse.class, myPostData);
我收到回复:
POST http://localhost:81/testsite/wp-json/wp/v2/posts returned a response status of 401 Unauthorized
使用 Postman 时,我能够成功发布。
我做错了什么?
WebResource.header()
returns一个新的WebResource.Builder
。所以当你在做
WebResource webResource = client.resource(url);
webResource.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX");
在第二行中,您正在创建一个新的 WebResource.Builder
并且什么都不做。所以发生的事情是 headers 永远不会被设置,因为你在原来的 WebResource
上调用 post()
而不是你设置 header 的 WebResource.Builder
.
您可以将 header()
调用分配给 WebResource.Builder
变量并调用 that 上的方法,或者您可以将调用链接起来。
WebResource webResource = client.resource(url);
WebResource.Builder builder = webResource.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX");
builder.header(HttpHeaders.CONTENT_TYPE, "application/json");
builder.accept(MediaType.APPLICATION_JSON);
ClientResponse response = builder.post(ClientResponse.class, myPostData);
或者全部链接起来
ClientResponse response = client.resource(url)
.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX")
.header(HttpHeaders.CONTENT_TYPE, "application/json")
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, myPostData);
我正在尝试使用 Jersey WebResource 对象在 Wordpress 站点上发布 post。 Wordpress 站点和 Java 应用程序都是本地的。我正在尝试这个:
String url = "http://localhost:81/testsite/wp-json/wp/v2/posts";
String myPostData = "{'title':'test','content':'bla bla bla'}";
Client client = Client.create();
WebResource webResource = client.resource(url);
webResource.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX"); //XXXXXX is the encoded user:password
webResource.header(HttpHeaders.CONTENT_TYPE, "application/json");
webResource.accept(MediaType.APPLICATION_JSON);
ClientResponse response = webResource.post(ClientResponse.class, myPostData);
我收到回复:
POST http://localhost:81/testsite/wp-json/wp/v2/posts returned a response status of 401 Unauthorized
使用 Postman 时,我能够成功发布。
我做错了什么?
WebResource.header()
returns一个新的WebResource.Builder
。所以当你在做
WebResource webResource = client.resource(url);
webResource.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX");
在第二行中,您正在创建一个新的 WebResource.Builder
并且什么都不做。所以发生的事情是 headers 永远不会被设置,因为你在原来的 WebResource
上调用 post()
而不是你设置 header 的 WebResource.Builder
.
您可以将 header()
调用分配给 WebResource.Builder
变量并调用 that 上的方法,或者您可以将调用链接起来。
WebResource webResource = client.resource(url);
WebResource.Builder builder = webResource.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX");
builder.header(HttpHeaders.CONTENT_TYPE, "application/json");
builder.accept(MediaType.APPLICATION_JSON);
ClientResponse response = builder.post(ClientResponse.class, myPostData);
或者全部链接起来
ClientResponse response = client.resource(url)
.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX")
.header(HttpHeaders.CONTENT_TYPE, "application/json")
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, myPostData);