【问题标题】:Publish post on Wordpress with REST API and Java Jersey application使用 REST API 和 Java Jersey 应用程序在 Wordpress 上发布帖子
【发布时间】:2018-10-16 19:52:56
【问题描述】:

我正在尝试使用 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 返回响应状态为 401 Unauthorized

使用 Postman 时,我能够成功发布。

我做错了什么?

【问题讨论】:

  • "XXXXXX 是编码的用户:密码" - 你是如何编码的?你能贴一张邮递员请求成功的图片吗?
  • 我只是在 Postman 上复制 Authorization 键的值并粘贴到我的 Java 代码上,只是为了测试。

标签: java wordpress rest jersey


【解决方案1】:

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

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

在第二行中,您正在创建一个新的WebResource.Builder 并且什么都不做。所以发生的情况是,当您在原始 WebResource 上调用 post() 而不是您设置标头的 WebResource.Builder 时,标头永远不会设置。

您可以将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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    相关资源
    最近更新 更多