Публикация поста в Wordpress с использованием REST API и приложения Java Jersey - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь опубликовать пост на сайте Wordpress с помощью объекта Jersey WebResource.Сайт 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

При использовании Почтальона я могу успешно опубликовать.

enter image description here

Что я делаю не так?

1 Ответ

0 голосов
/ 18 октября 2018

WebResource.header() возвращает новый WebResource.Builder.Поэтому, когда вы делаете

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

во второй строке, вы создаете новый WebResource.Builder и ничего не делаете с ним.Таким образом, происходит то, что заголовки никогда не устанавливаются при вызове post() на исходном WebResource, а не на 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...