java - 使用 REST API 和 Java Jersey 应用程序在 Wordpress 上发布帖子

标签 java wordpress rest jersey

我正在尝试使用 Jersey WebResource 对象在 Wordpress 网站上发布帖子。 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时,我能够成功发布。

enter image description here

我做错了什么?

最佳答案

WebResource.header() 返回一个新的 WebResource.Builder。所以当你做的时候

WebResource webResource = client.resource(url);
webResource.header(HttpHeaders.AUTHORIZATION, "Basic XXXXXX");

在第二行中,您正在创建一个新的WebResource.Builder并且不对其进行任何操作。因此,当您在原始 WebResource 上调用 post() 而不是您设置 header 的 WebResource.Builder 时, header 永远不会被设置。

您可以将 header() 调用分配给 WebResource.Builder 变量并调用该变量的方法,或者您也可以直接链接调用。

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);

关于java - 使用 REST API 和 Java Jersey 应用程序在 Wordpress 上发布帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52843105/

相关文章:

java - net.serenitybdd.core.exceptions.SerenityManagedException : SERENITY_DISABLE_REST_CALLS_AFTER_FAILURES

java - 为什么 Stack 使用基于 1 的索引而不是像 Java 中的数组那样使用基于 0 的索引?

php - wordpress 的自定义步行者菜单不起作用

php - header ("Content-type: text/xml"的替代品);

facebook - 使用 Facebook 登录的后端 Web 服务

rest - 聚合根在 REST API (DDD) 中的作用

java - Tomcat 服务停止部署

php - 从 Woocommerce 中的特定产品单页隐藏相关产品

rest - 使用自签名根 ca 保护休息服务的优缺点是什么?

java - 如何使我的自定义链表使用泛型?