无法 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无效
已更新:工作代码!
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无效