Как прочитать ответ ClickSend smsSendPost в Java SDK?

#java #spring-boot #sms

#ява #весенняя загрузка #sms #java

Вопрос:

Я пытаюсь интегрировать ClickSend для отправки sms.

Возможность отправить sms, используя приведенный ниже код:

 SmsApi apiInstance = new SmsApi(defaultClient);
SmsMessage smsMessage1 = new SmsMessage();
smsMessage1.body("Test SMS 1");
smsMessage1.to(" 61411111111");
smsMessage1.source("Java");
List<SmsMessage> smsMessageList = Arrays.asList(smsMessage1);
SmsMessageCollection smsMessages = new SmsMessageCollection();
smsMessages.messages(smsMessageList);
try {
    String result = apiInstance.smsSendPost(smsMessages);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling SmsApi#smsSendPost");
    e.printStackTrace();
}
  

Формат ответа — строка. Но для этого не предоставлен класс.
Трудно получить данные для нескольких SmsMessage.
Как прочитать ответ ClickSend smsSendPost в Java SDK ?
Есть ли какой-либо доступный класс, который содержит ответ, такой как SmsMessage, SmsMessageCollection в Java SDK ClickSend.

Ответ №1:

Надеюсь, это поможет:

 package com.example.demo;
​
import ClickSend.*;
import ClickSend.auth.*;
import ClickSend.Model.*;
import ClickSend.Api.AccountApi;
import ClickSend.Api.SmsApi;
​
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
​
import java.io.File;
import java.util.*;
​
​
public class SMS {
    public static void main(String[] args) {
        sendSMS();
    }
    public static void sendSMS() {
​
        ApiClient defaultClient = new ApiClient();
        defaultClient.setUsername("your_login@email.com");
        defaultClient.setPassword("SecretPa$$word!");
        SmsApi apiInstance = new SmsApi(defaultClient);
    
        SmsMessage smsMessage=new SmsMessage();
        smsMessage.body("This is the body of the message");
        smsMessage.to(" 6111111111");
        smsMessage.source("java");
    
        List<SmsMessage> smsMessageList=Arrays.asList(smsMessage);
        SmsMessageCollection smsMessages = new SmsMessageCollection();
        smsMessages.messages(smsMessageList);
        try {
            String result = apiInstance.smsSendPost(smsMessages);
            System.out.println(result);
​
            JsonObject jsonObject = new JsonParser().parse(result).getAsJsonObject();
​
            JsonArray messageArray = jsonObject.getAsJsonObject("data").getAsJsonArray("messages");
​
            // Here is the array and how to grab some stuff out of it.
            // Could also use messageArray.forEach here
            for( int i = 0; i <= messageArray.size(); i   ) {
                JsonObject message = messageArray.get(i).getAsJsonObject();
                double price = message.get("message_price" ).getAsDouble();
                String body = message.get("body").getAsString();
​
                System.out.printf( "It cost %f to send '%s'n", price, body);
            }
        } catch (ApiException e) {
            System.err.println("Oops");
            e.printStackTrace();
        }
    }
}
  

Комментарии:

1. можете ли вы предоставить мне пример кода для преобразования строки ответа smsSendPost в массив, чтобы получить подробную информацию на Java?