이 장은 문자 메시지를 보내는 첫 번째 부분입니다. 문자 메시지를 동시에 비동기로 보내는 코드에 대해 이야기 해 봅시다. 다음 몇 기사에서는 기능을 약간 개선하고 보내는 주파수 및 매일 보내는 시간에 한도를 추가합니다.
문자 메시지를 보내는 방법에는 여러 가지가있을 수 있습니다. 우리의 방법은 서비스 제공 업체가 제공하는 서비스를 사용하는 것입니다. 일반적으로 이러한 서비스는 언어가 없습니다. 여기서 우리는 Java를 사용하여 샘플 프로그램을 작성합니다.
1. 문자 메시지 보내기위한 인터페이스 <br /> 자신의 상황에 따라 서비스 제공 업체를 선택하십시오.
2. 개발 문서 <br /> 우리는 개발 문서에서 볼 수 있습니다. http 요청을 직접 또는 웹 서비스 요청을 사용하여 문자 메시지를 보낼 수 있습니다. Demo 폴더의 Java 및 JSP 폴더의 코드는 HTTP 요청을 사용하여 문자 메시지를 보내기 때문에. 그래서 나는 여기서 자세한 내용을 보지 않을 것입니다. 우리는 웹 서비스를 사용하여 문자 메시지 보내기를 보여줍니다.
3. 클라이언트 코드를 생성합니다
인터페이스 문서에서 웹 서비스 WSDL의 URL은 http://106.ihuyi.cn/webservice/sms.php?wsdl이라는 것을 알고 있습니다. 그러면 다음 명령을 실행하여 클라이언트 코드를 생성 할 수 있습니다.
wsimport -keep http://106.ihuyi.cn/webservice/sms.php?wsdl
그 중에서 WSimport는 JDK와 함께 제공되는 도구이며 -Keep URL 옵션은 "생성 된 파일을 유지"합니다. 이 명령은 현재 디렉토리와 많은 클래스에서 sms.cn.ihuyi._106 패키지를 생성합니다. 다음으로, 우리 자신의 코드를 작성하십시오.
4. 인터페이스를 정의하십시오
편의를 위해 여기서는 먼저 인터페이스를 정의합니다.
sms.java
공개 인터페이스 SMS { / ** * SMS를 모바일로 보내기, 콘텐츠는 메시지입니다 * @Param 메시지 SMS Content * @return은 -1을 성공적으로 반환합니다.이 인터페이스는 매우 간단하며 방법은 하나뿐입니다. 이 방법은 문자 메시지를 보내는 데 사용됩니다.
5. 문자 메시지를 동시에 보냅니다
다음으로, 먼저 SMS를 동시에 보내는 클래스를 구현합니다.
iHuyismsimpl.java
공개 클래스 ihuyismsimpl은 sms {private String 계정; 개인 문자열 비밀번호; public void setAccount (문자열 계정) {this.account = 계정; } public void setpassword (문자열 비밀번호) {this.password = password; } @override public int sendmessage (문자열 모바일, 문자열 메시지) {cn.ihuyi._106.sms factory = new cn.ihuyi._106.sms (); smssoap smssoap = factory.getsmssoap (); 제출물 제출 = smssoap.submit (계정, 비밀번호, 모바일, 메시지); int code = submit.getCode (); if (code == 2) {return -1; } system.out.println ( "SNS SMS 실패, 코드 :" + code); 반환 코드; }}17 행에서는 원격 객체의 프록시 객체를 얻습니다. 그런 다음이 프록시 오브젝트를 통해 SMS를 보내고 계정 잔액 및 기타 작업을 쿼리 할 수 있습니다.
18 행에서 SMS 컨텐츠는 프록시 오브젝트의 제출 방법을 사용하여 제출됩니다. 메소드의 매개 변수 정보 및 반환 값 의미는 인터페이스 문서에 자세히 설명되어 있습니다.
19 행에서는 결과의 상태 코드를 얻습니다. 문서의 지침에 따르면 상태 코드는 2이며 제출이 성공했음을 나타냅니다. 단순화를 위해, 우리는 제출이 성공한 상황에만 초점을 맞 춥니 다. 상태 코드는 2이며 제출이 성공했음을 나타냅니다. 공식 웹 사이트의 공식 웹 사이트 "3-5 초 안에 응답, 100% 도착"에 따르면 공식 웹 사이트에서 우리는 추론 할 수 있습니다. 제출이 성공하면 기본적으로 SMS는 3-5 초 안에 성공적으로 전송됩니다. 사용자의 네트워크 상황에 따르면 사용자는 약간 지연된 SMS를받을 수 있습니다.
이 코드를 사용하여 문자 메시지를 보내는 것도 매우 간단합니다. 객체를 직접 새로 새롭게하고 계정 및 비밀번호를 설정하고 문자 메시지를 보낼 수 있습니다.
6. 문자 메시지를 비동기로 보냅니다
SMS를 전송하는 데는 네트워크 통신이 포함되므로 SendMessage 메소드는 약간의 지연이 발생할 수 있습니다. 사용자 경험을 향상시키기 위해 SMS를 비동기로 보내는 방법을 사용할 수 있습니다. 원칙은 매우 간단합니다. 사용자가 IHUYISMSIMPL의 SendMessage 메소드를 직접 호출하는 대신 SMS를 보내도록 요청하면 요청 (생산자)을 저장 한 다음 사용자에게 SMS가 성공적으로 전송됩니다. 그 후, 몇몇 소비자가 작업을 취하고 SendMessage 메소드에 전화하여 SMS를 보내십시오.
여기서는 스레드 풀을 사용하여 위의 작업을 완료합니다.
Asyncsmsimpl.java
공개 클래스 asyncsmsimpl은 sms {public sms sendsms; 개인 executorService executorService = executors.newfixedThreadpool (3); public void setSendsms (sms sendsms) {this.sendsms = sendsms; } @override public int sendMessage (문자열 모바일, 문자열 메시지) {try {executorService.submit (() -> sendsms.sendMessage (mobile, message))); } catch (예외 e) {sysemt.out.println ( "작업을 제출하는 동안 오류가 발생했습니다" + e); 반환 0; } 반환 -1; } public void destrove () {try {executorService.shutdown (); } catch (예외 e) {}}}코드는 매우 간단합니다. SMS 인터페이스의 SendMessage (Mobile, Message) 메소드를 스레드 풀의 작업 큐에 작업으로 직접 추가 할 수 있습니다. 이러한 방식으로, 무료 스레드가 있으면 SendSms.SendMessage (Mobile, Message)가 실행되면 SMS를 보내십시오. 여기서 우리는 그것이 스레드 풀에 저장되는 한 SMS를 성공적으로 보낼 수 있다고 가정합니다. 실패는 실제로 드물기 때문입니다.
문자 메시지를 동시에/비동기식으로 보내는 것이 완료됩니다. 다음 몇 가지 기사에서는 다음과 같은 몇 가지 일반적인 제한 사항을 살펴 보겠습니다. 분에 한 번만 보낼 수 있습니다. 하루에 5 번만 보낼 수 있습니다.
모두 가이 기사를 좋아하기를 바랍니다.