java - 如何从android应用程序向WHMCS安装发送正确的发布请求?
问题描述
我正在尝试通过我的 android 应用程序向我的 WHMCS 安装发送 AddClient 发布请求,但它一直返回“result=error;message=You did not enter your first name”。
我让它成功验证,但它似乎没有发布我发送的 jsonObject。
这是 WHMCS api 文档的链接:https ://developers.whmcs.com/api-reference/addclient/
public void createWHMCSUser(final String emailID, final String random, final String uid) {
final String AccessUserKey = "abc123";
final String AccessKey = "abc123";
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://whmcs.installation.com/includes/api.php?action=AddClient&username=abc123&password=abc123&accesskey=abc123");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept","application/json");
conn.setDoOutput(true);
conn.setDoInput(true);
JSONObject jsonParam = new JSONObject();
jsonParam.put("action", "AddClient");
jsonParam.put("identifier", AccessUserKey);
jsonParam.put("secret", AccessKey);
jsonParam.put("firstname", "User");
jsonParam.put("lastname", "Name");
jsonParam.put("email", emailID);
jsonParam.put("address1", "na");
jsonParam.put("city", "na");
jsonParam.put("state", "na");
jsonParam.put("postcode", "00000");
jsonParam.put("country", "US");
jsonParam.put("phonenumber", "0000000000");
jsonParam.put("password2", random);
jsonParam.put("repsonsetype", "json");
Log.i("JSON", jsonParam.toString());
DataOutputStream os = new DataOutputStream(conn.getOutputStream());
os.writeBytes(URLEncoder.encode(jsonParam.toString(), "UTF-8"));
//os.writeBytes(jsonParam.toString());
os.flush();
os.close();
Log.i("STATUS", String.valueOf(conn.getResponseCode()));
Log.i("MSG", conn.getResponseMessage());
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
它应该返回“结果=成功”。
但实际上返回“result=error;message=You did not enter your first name”。
解决方案
看来您的 API 在此示例中不起作用。
尝试Postman,如果 json 在那里不起作用,那么问题出在你的 api 中。
推荐阅读
- elasticsearch - elasticsearch:如何在最后 30 秒内搜索结果?
- javascript - 定位一个特定的 div 甚至在它之外滚动
- html - 如何显示在智能向导前面步骤中选择的选项
- spring - spring-boot v2 执行器选择器
- c++ - 无法在 C++ 中读取 .txt 文件
- aws-api-gateway - 向 AWS API Gateway 中的资源添加方法
- sequelize.js - Sequlize 'as' 和 'foreign key' 属性如何影响关系?
- python-3.x - 如何使用 python 在 paho mqtt 中使用 ssl/tls?我的证书验证失败
- node.js - NodeJS 为签名和验证消息生成有效的 PEM 密钥
- loops - jmeter - 如何制作循环并且每次都必须更改值