[英]example of curl request with #param convert to Java POST request
I am creating API to send messages to SMS Server.我正在创建 API 来向 SMS Server 发送消息。 API is based on HTTP and JSON.
API 基于 HTTP 和 JSON。 Documentation takes cURL as an example I need convert it to JAVA.
文档以 cURL 为例,我需要将其转换为 JAVA。
Request:要求:
POST https://gateway_ip/api/send_sms
Example Request with #param:带有#param 的示例请求:
curl -k --anyauth -u admin:admin -d
'{"text":"#param#","port":[2,3],"param":[{"number":"10086","te
xt_param":["bj"],"user_id":1},{"number":"10086",
"text_param":["ye"],"user_id":2}]}' -H "Content-Type:
application/json" https://gateway_ip/api/send_sms
First I create model that take phone number, massage text and setup port首先,我创建了 model,它带有电话号码、按摩文本和设置端口
class Model {
private final String number;
private final String port;
private final String text;
public Model(String number, String text) {
this.number = number;
this.port = "[0]";
this.text = text;
}
public String getNumber() {
return number;
}
public String getPort() {
return port;
}
public String getText() {
return text;
}
}
JSON generator: JSON 发生器:
private static String toJsonString(List<Model> model) {
StringWriter jsonObjectWriter = null;
try {
com.fasterxml.jackson.core.JsonFactory jsonFactory = new com.fasterxml.jackson.core.JsonFactory();
jsonObjectWriter = new StringWriter();
JsonGenerator generator = jsonFactory.createGenerator(jsonObjectWriter);
generator.setPrettyPrinter(new DefaultPrettyPrinter());
generator.writeStartObject();
generator.writeStringField("text", "#param#");
generator.writeStringField("port", "[0]");
toJsonString(generator, model);
generator.writeEndObject();
generator.flush();
} catch (IOException e) {
e.printStackTrace();
}
return jsonObjectWriter.toString();
}
private static void toJsonString(final JsonGenerator generator, final List<Model> model) throws IOException{
generator.writeFieldName("param");
generator.writeStartArray();
for (final Model m : model) {
generator.writeStartObject();
generator.writeStringField("number", m.getNumber());
toJsonString(generator, m.getText());
generator.writeEndObject();
}
generator.writeEndArray();
}
private static void toJsonString(final JsonGenerator generator, String text) throws IOException{
generator.writeFieldName("text_param");
generator.writeStartArray();
generator.writeString(text);
generator.writeEndArray();
}
Headers with authentication - I am not sure if I should include authentication.带有身份验证的标头 - 我不确定是否应该包括身份验证。
private HttpHeaders createHeadersWithAuthentication() {
String credentials = login + ":" + password;
byte[] credentialsBytes = Base64.getEncoder().encode(credentials.getBytes());
String base64Credentials = new String(credentialsBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Credentials);
return headers;
}
Execution执行
public ResponseEntity sendSMSMessage(String phoneNumber, String message) {
Model model = new Model(phoneNumber, message);
List<Model> modelList = new ArrayList<>();
modelList.add(model);
String createJson = toJsonString(modelList);
// "https://xx.xx.xx.xx/api/send_sms";
String url = urlConfig;
// "Content-Type: application/json"
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> requestEntity = new HttpEntity<String>(createJson, httpHeaders);
return restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
}
I am not sure what I did wrong.我不确定我做错了什么。 From command line example from doc working fine but from my Java Code there is no output.
从 doc 的命令行示例工作正常,但从我的 Java 代码中没有 output。 Nothing was send to Sms Server.
没有任何东西发送到短信服务器。 From debuger Json looks fine.
从调试器 Json 看起来不错。
Appreciate for any hints and correction.感谢任何提示和更正。
I am creating API to send messages to SMS Server.我正在创建 API 来向 SMS Server 发送消息。 API is based on HTTP and JSON.
API 基于 HTTP 和 JSON。 Documentation takes cURL as an example I need convert it to JAVA.
文档以 cURL 为例,我需要将其转换为 JAVA。
Request:要求:
POST https://gateway_ip/api/send_sms
Example Request with #param:带有#param 的示例请求:
curl -k --anyauth -u admin:admin -d
'{"text":"#param#","port":[2,3],"param":[{"number":"10086","te
xt_param":["bj"],"user_id":1},{"number":"10086",
"text_param":["ye"],"user_id":2}]}' -H "Content-Type:
application/json" https://gateway_ip/api/send_sms
First I create model that take phone number, massage text and setup port首先,我创建了 model,它带有电话号码、按摩文本和设置端口
class Model {
private final String number;
private final String port;
private final String text;
public Model(String number, String text) {
this.number = number;
this.port = "[0]";
this.text = text;
}
public String getNumber() {
return number;
}
public String getPort() {
return port;
}
public String getText() {
return text;
}
}
JSON generator: JSON 发生器:
private static String toJsonString(List<Model> model) {
StringWriter jsonObjectWriter = null;
try {
com.fasterxml.jackson.core.JsonFactory jsonFactory = new com.fasterxml.jackson.core.JsonFactory();
jsonObjectWriter = new StringWriter();
JsonGenerator generator = jsonFactory.createGenerator(jsonObjectWriter);
generator.setPrettyPrinter(new DefaultPrettyPrinter());
generator.writeStartObject();
generator.writeStringField("text", "#param#");
generator.writeStringField("port", "[0]");
toJsonString(generator, model);
generator.writeEndObject();
generator.flush();
} catch (IOException e) {
e.printStackTrace();
}
return jsonObjectWriter.toString();
}
private static void toJsonString(final JsonGenerator generator, final List<Model> model) throws IOException{
generator.writeFieldName("param");
generator.writeStartArray();
for (final Model m : model) {
generator.writeStartObject();
generator.writeStringField("number", m.getNumber());
toJsonString(generator, m.getText());
generator.writeEndObject();
}
generator.writeEndArray();
}
private static void toJsonString(final JsonGenerator generator, String text) throws IOException{
generator.writeFieldName("text_param");
generator.writeStartArray();
generator.writeString(text);
generator.writeEndArray();
}
Headers with authentication - I am not sure if I should include authentication.带有身份验证的标头 - 我不确定是否应该包括身份验证。
private HttpHeaders createHeadersWithAuthentication() {
String credentials = login + ":" + password;
byte[] credentialsBytes = Base64.getEncoder().encode(credentials.getBytes());
String base64Credentials = new String(credentialsBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Credentials);
return headers;
}
Execution执行
public ResponseEntity sendSMSMessage(String phoneNumber, String message) {
Model model = new Model(phoneNumber, message);
List<Model> modelList = new ArrayList<>();
modelList.add(model);
String createJson = toJsonString(modelList);
// "https://xx.xx.xx.xx/api/send_sms";
String url = urlConfig;
// "Content-Type: application/json"
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> requestEntity = new HttpEntity<String>(createJson, httpHeaders);
return restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
}
I am not sure what I did wrong.我不确定我做错了什么。 From command line example from doc working fine but from my Java Code there is no output.
从 doc 的命令行示例工作正常,但从我的 Java 代码中没有 output。 Nothing was send to Sms Server.
没有任何东西发送到短信服务器。 From debuger Json looks fine.
从调试器 Json 看起来不错。
Appreciate for any hints and correction.感谢任何提示和更正。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.