无法 POST 使用来自 Android 的 wp-API 请求

Can't POST request using wp-API from Android

已更新:工作代码!

static public HttpURLConnection HTTPconnectionPOST(String url_api, String name, String password,String method) throws IOException {
     URL url = new URL(url_api);

    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    String urlParameters = "Content=Testing&title=TheTest";
    connection.setRequestMethod("POST");

    String userCredentials = name+":"+password;

    connection.addRequestProperty("Authorization", "Basic " + Base64.encodeToString((name + ":" + password).getBytes(), Base64.DEFAULT).trim());
    connection.setRequestProperty("Host", "localhost");


    connection.setDoOutput(true);
    DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
    dStream.writeBytes(urlParameters);
    dStream.flush();
    dStream.close();



      connection.connect();
      return connection;

    }

这是我用来发出 POST 请求的代码:

static public HttpURLConnection HTTPconnectionPOST(String url_api, String name, String password,String method) throws IOException {
     URL url = new URL(url_api);
     System.out.println(url_api);
    urlConnection = (HttpURLConnection) url.openConnection();


   urlConnection.setRequestMethod(method);

   String userCredentials = name+":"+password;
   String basicAuth = "Basic " + new String(Base64.encode(userCredentials.getBytes(),Base64.DEFAULT));
   urlConnection.setRequestProperty("Host", "localhost");
   urlConnection.setRequestProperty ("Authorization", basicAuth);

   urlConnection.setRequestProperty("Accept-Charset", "UTF-8");


    /* optional request header */
   urlConnection.setRequestProperty("Content-Type", "application/json");

   /* optional request header */
   urlConnection.setRequestProperty("Accept", "application/json");

   urlConnection.setConnectTimeout (30000) ; 

    urlConnection.setDoOutput(true); 
    String a="testing";
    String b="test";
    String c="test";
    Uri.Builder builder = new Uri.Builder()
       .appendQueryParameter("Content", a)
       .appendQueryParameter("title", b)
       .appendQueryParameter("excerpt", c);
      String query = builder.build().getEncodedQuery();

      OutputStream os = urlConnection.getOutputStream();
      BufferedWriter writer = new BufferedWriter(
      new OutputStreamWriter(os, "UTF-8"));
      writer.write(query.toString());
      writer.flush();
      writer.close();
      os.close();
      System.out.println(query);

      urlConnection.connect();
      return urlConnection;

    }

作为回应,这就是我得到的: 无法 post 数据 400 错误流内容是: { "code": "empty_content", "message": "Content, title, and excerpt are empty.", "data":{ "status": 400 } }

解决方法在这里!

Base64.encodeToString在编码后的末尾加一个\nuser:pass,使Header无效

source