㈠ java程序怎麼調用webservice介面,實現發送簡訊功能
給你一個最簡單的方法:
第一、根據http://134.224.102.6:80/CompanySendSmInf/services/SmsInf?wsdl 拿到WSDL文件。
第二、根據Axis的jar包,把WSDL文件生成客服端java代碼。(可以把java文件打成jar文件,便於管理。怎麼生成java代碼,網路里都有說明我就不寫了。)
第三、在你工程里用AXIS的功能屬性,調用外部介面;給你一個格式模板:
MobileCodeWSLocator l=new MobileCodeWSLocator();//MobileCodeWSLocator是WSDL文件生成客服端java類;
MobileCodeWSSoap s=l.getMobileCodeWSSoap();();//MobileCodeWSSoap 是WSDL文件生成客服端java類
String m=s.getMobileCodeInfo("13811534742", "");
如果你用Axis生成的java類,格式和上面一樣;自己參考一下就懂了。
你上面明顯的連接異常,第三方服務明顯沒有開,WEBSERVICE可以設置戶名、密碼,像行所有的WEBSERVICE都設置,安全考慮吧。
㈡ Java能不能編寫手機簡訊系統,實現通過手機號發送簡訊
可以用簡訊介面。
我們公司做審批流程,用的騰訊的。阿里都有,只需要調用介面就行。
不過都要收費。
給手機發消息,手機回復,根據配置調用JAVA介面,執行後續操作。
㈢ java怎麼實現群發簡訊的功能
JAVA實現簡訊群發的步驟:
1、使用第三方簡訊平台服務商,接入簡訊服務;
2、調用簡訊提交頁面發送請求;
3、伺服器向第三方簡訊平台提交發送請求;
4、簡訊平台通過運營商將簡訊下發至用戶的手機上。
以下是秒賽簡訊平台JAVA簡訊驗證碼介面代碼示例
package test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.lang3.StringUtils;
public class Apis {
// 簡訊發送介面的http地址,請咨詢客服
private static String url = 「xxxxxxxxxxxxxxxxxxxxxxxxxxxx」;
// 編碼格式。發送編碼格式統一用UTF-8
private static String ENCODING = 「UTF-8」;
public static void main(String[] args) throws IOException, URISyntaxException {
// 賬號
String account = 「************************」;
// 密碼
String pswd = 「************************」;
// 修改為您要發送的手機號,多個用,分割
String mobile = 「13*********」;
// 設置您要發送的內容
String msg = 「【秒賽科技】您的驗證碼是:1234」;
// 發簡訊調用示例
System.out.println(Apis.send(account,pswd, mobile, msg));
}
/**
* 發送簡訊
*
* @param account
* account
* @param pswd
* pswd
* @param mobile
* 手機號碼
* @param content
* 簡訊發送內容
*/
public static String send(String account,String pswd, String mobile, String msg) {
NameValuePair[] data = { new NameValuePair(「account」, account),
new NameValuePair(「pswd」, pswd),
new NameValuePair(「mobile」, mobile),
new NameValuePair(「msg」, msg),
new NameValuePair(「needstatus」, 「true」),
new NameValuePair(「proct」, 「」) };
return doPost(url, data);
}
/**
* 基於HttpClient的post函數
* PH
* @param url
* 提交的URL
*
* @param data
* 提交NameValuePair參數
* @return 提交響應
*/
private static String doPost(String url, NameValuePair[] data) {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);
// method.setRequestHeader(「ContentType」,
// 「application/x-www-form-urlencoded;charset=UTF-8」);
method.setRequestBody(data);
// client.getParams()。setContentCharset(「UTF-8」);
client.getParams()。setConnectionManagerTimeout(10000);
try {
client.executeMethod(method);
return method.getResponseBodyAsString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
㈣ 中國移動簡訊介面java怎麼調用
java調用運營商的介面參考:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>
<%
String PostData = "sname=kwsm&spwd=kwsm&scorpid=&sprdid=101&sdst=13910862579&smsg="+java.net.URLEncoder.encode("簡訊內容","utf-8");
//out.println(PostData);
String ret = cn.umob.sms.Send.SMS(PostData, "http://10.1.120.22/SmsMmsWebService/Service.asmx/g_Submit");
out.println(ret);
//請自己反序列化返回的字元串並實現自己的邏輯
%>
</h1>
</body>
</html>
㈤ java怎麼同步發送及非同步發送簡訊例子解析
發送簡訊的介面
根據自己的情況選擇服務商。
開發文檔
從開發文檔中我們可以看到. 可以直接使用http請求也可以使用WebService請求發送簡訊. 由於DEMO文件夾下的java和jsp文件夾中的代碼都是使用http請求發送簡訊. 所以這里就不再細說了, 我們使用WebService的方式演示發送簡訊.
生成客戶端代碼
從介面文檔中我們知道它的WebService的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包, 以及眾多的類. 接下來開始編寫我們自己的代碼.
定義介面
為了方便, 這里我們首先定義一個介面:
Sms.java
publicinterfaceSms{
/**
*向mobile發送簡訊,內容為message
*
*@parammobile手機號
*@parammessage簡訊內容
*@return成功返回-1,否則返回其他值
*/
intsendMessage(Stringmobile,Stringmessage);
}
這個介面很簡單, 只有一個方法. 這個方法用來發送簡訊.
同步發送簡訊
接下來我們首先實現一個同步發送簡訊的類:
IhuyiSmsImpl.java
{
privateStringaccount;
privateStringpassword;
publicvoidsetAccount(Stringaccount){
this.account=account;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
@Override
publicintsendMessage(Stringmobile,Stringmessage){
cn.ihuyi._106.Smsfactory=newcn.ihuyi._106.Sms();
SmsSoapsmsSoap=factory.getSmsSoap();
SubmitResultsubmit=smsSoap.submit(account,password,mobile,message);
intcode=submit.getCode();
if(code==2){
return-1;
}
System.out.println("發送簡訊失敗,code:"+code);
returncode;
}
}
非同步發送簡訊
由於發送簡訊涉及到網路通信, 因此sendMessage方法可能會有一些延遲. 為了改善用戶體驗, 我們可以使用非同步發送簡訊的方法. 原理很簡單: 如果用戶請求發送簡訊, 我們不是直接調用IhuyiSmsImpl的sendMessage方法, 而是將請求保存起來(生產者), 然後告訴用戶: 簡訊發送成功. 之後有若干個消費者取出任務, 調用sendMessage方法發送簡訊.
這里, 我使用線程池完成上面的任務:
AsyncSmsImpl.java
{
publicSmssendSms;
=Executors.newFixedThreadPool(3);
publicvoidsetSendSms(SmssendSms){
this.sendSms=sendSms;
}
@Override
publicintsendMessage(Stringmobile,Stringmessage){
try{
executorService.submit(()->sendSms.sendMessage(mobile,message));
}
catch(Exceptione){
Sysemt.out.println("提交任務時發生錯誤"+e);
return0;
}
return-1;
}
publicvoiddestroy(){
try{
executorService.shutdown();
}
catch(Exceptione){}
}
}
在第17行, 我們獲得遠程對象的一個代理對象. 之後就可以通過這個代理對象進行發送簡訊, 查詢賬戶余額等操作.
第18行, 使用該代理對象的submit方法提交了簡訊內容. 該方法的參數信息及返回值含義在介面文檔中有詳細的說明.
第19行我們獲得了結果的狀態碼. 根據文檔上的說明, 狀態碼為2說明提交成功. 簡單起見, 這里我們只關注提交成功的情況. 需要注意的是, 狀態碼為2隻是說明提交成功. 根據官網上的"3-5秒內響應、100%到達", 我們可以推測. 如果提交成功, 那麼基本上3-5秒內,簡訊就會發送成功, 根據用戶的網路情況, 可能稍有延遲用戶就可以收到簡訊.
使用這段代碼發送簡訊也很簡單, 直接new一個對象, 設置好賬號和密碼就可以發送簡訊了.
代碼很簡單, 直接將Sms介面的sendMessage(mobile, message)方法作為一個任務加到線程池的任務隊列中. 這樣等到有空閑線程時, 就會執行sendSms.sendMessage(mobile, message)發送簡訊. 這里我們假設只要保存到線程池就可以成功發送簡訊. 因為發送失敗的情況實際上很罕見.
㈥ 定義一個Java手機介面,打電話,接電話,發簡訊,接受簡訊的功能
public interface Calling {
/**
*
* @param callPhoneNo 主叫號碼
* @param calledPhoneNo 被叫號碼
* @return 返回接電話成功失敗標識
*/
public int callIn(String callPhoneNo,String calledPhoneNo);
/**
*
* @param calledPhoneNo 被叫號碼
* @param callPhoneNo 主叫號碼
* @return返回打電話成功失敗標識
*/
public int callOut(String calledPhoneNo,String callPhoneNo);
/**
*
* @param calledPhoneNo 接收簡訊號碼
* @param callPhoneNo發送簡訊號碼
* @param content 簡訊內容
* @return 發送簡訊成功標識
*/
public int sendMsg(String calledPhoneNo,String callPhoneNo,String content);
/**
*
* @param callPhoneNo 發送簡訊號碼
* @param calledPhoneNo 接收簡訊號碼
* @param content 簡訊內容
* @return 接收簡訊成功標識
* 備註:其實不用這個介面也可以,發送簡訊是將簡訊保存至簡訊發送表,然後有進程實時掃描數據,然後發送
*/
public int reciveMsg(String callPhoneNo,String calledPhoneNo,String content);
}
㈦ java簡訊驗證介面可以顯示驗證碼,但是發不到手機上,怎麼回事
先創建一個驗證碼,通過簡訊代理發送到用戶指定的手機,待用戶提交後做對比,看驗證碼是否一致。
整體流程:
㈧ java如何實現發送簡訊驗證碼功能
1、創建一個Http的模擬請求工具類,然後寫一個POST方法或者GET方法
/** * 文件說明 * @Description:擴展說明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.io.IOException;import java.util.Map; import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.SimpleHttpConnectionManager;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @Version:V6.0 */public class HttpRequestUtil { /** * HttpClient 模擬POST請求 * 方法說明 * @Discription:擴展說明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String postRequest(String url, Map<String, String> params) { //構造HttpClient的實例 HttpClient httpClient = new HttpClient(); //創建POST方法的實例 PostMethod postMethod = new PostMethod(url); //設置請求頭信息 postMethod.setRequestHeader("Connection", "close"); //添加參數 for (Map.Entry<String, String> entry : params.entrySet()) { postMethod.addParameter(entry.getKey(), entry.getValue()); } //使用系統提供的默認的恢復策略,設置請求重試處理,用的是默認的重試處理:請求三次 httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false); //接收處理結果 String result = null; try { //執行Http Post請求 httpClient.executeMethod(postMethod); //返回處理結果 result = postMethod.getResponseBodyAsString(); } catch (HttpException e) { // 發生致命的異常,可能是協議不對或者返回的內容有問題 System.out.println("請檢查輸入的URL!"); e.printStackTrace(); } catch (IOException e) { // 發生網路異常 System.out.println("發生網路異常!"); e.printStackTrace(); } finally { //釋放鏈接 postMethod.releaseConnection(); //關閉HttpClient實例 if (httpClient != null) { ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); httpClient = null; } } return result; } /** * HttpClient 模擬GET請求 * 方法說明 * @Discription:擴展說明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String getRequest(String url, Map<String, String> params) { //構造HttpClient實例 HttpClient client = new HttpClient(); //拼接參數 String paramStr = ""; for (String key : params.keySet()) { paramStr = paramStr + "&" + key + "=" + params.get(key); } paramStr = paramStr.substring(1); //創建GET方法的實例 GetMethod method = new GetMethod(url + "?" + paramStr); //接收返回結果 String result = null; try { //執行HTTP GET方法請求 client.executeMethod(method); //返回處理結果 result = method.getResponseBodyAsString(); } catch (HttpException e) { // 發生致命的異常,可能是協議不對或者返回的內容有問題 System.out.println("請檢查輸入的URL!"); e.printStackTrace(); } catch (IOException e) { // 發生網路異常 System.out.println("發生網路異常!"); e.printStackTrace(); } finally { //釋放鏈接 method.releaseConnection(); //關閉HttpClient實例 if (client != null) { ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); client = null; } } return result; }}
2、在創建一個類,生成驗證碼,然後傳遞相應的參數(不同的簡訊平台介面會有不同的參數要求,這個一般簡訊平台提供的介面文檔中都會有的,直接看文檔然後按要求來即可)
/** * 文件說明 * @Description:擴展說明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.net.URLEncoder;import java.util.HashMap;import java.util.Map; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @Version:V6.0 */public class SendMsgUtil { /** * 發送簡訊消息 * 方法說明 * @Discription:擴展說明 * @param phones * @param content * @return * @return String * @Author: feizi * @Date: 2015年4月17日 下午7:18:08 * @ModifyUser:feizi * @ModifyDate: 2015年4月17日 下午7:18:08 */ @SuppressWarnings("deprecation") public static String sendMsg(String phones,String content){ //簡訊介面URL提交地址 String url = "簡訊介面URL提交地址"; Map<String, String> params = new HashMap<String, String>(); params.put("zh", "用戶賬號"); params.put("mm", "用戶密碼"); params.put("dxlbid", "簡訊類別編號"); params.put("extno", "擴展編號"); //手機號碼,多個號碼使用英文逗號進行分割 params.put("hm", phones); //將簡訊內容進行URLEncoder編碼 params.put("nr", URLEncoder.encode(content)); return HttpRequestUtil.getRequest(url, params); } /** * 隨機生成6位隨機驗證碼 * 方法說明 * @Discription:擴展說明 * @return * @return String * @Author: feizi * @Date: 2015年4月17日 下午7:19:02 * @ModifyUser:feizi * @ModifyDate: 2015年4月17日 下午7:19:02 */ public static String createRandomVcode(){ //驗證碼 String vcode = ""; for (int i = 0; i < 6; i++) { vcode = vcode + (int)(Math.random() * 9); } return vcode; } /** * 測試 * 方法說明 * @Discription:擴展說明 * @param args * @return void * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static void main(String[] args) {// System.out.println(SendMsgUtil.createRandomVcode());// System.out.println("&ecb=12".substring(1)); System.out.println(sendMsg("18123456789,15123456789", "尊敬的用戶,您的驗證碼為" + SendMsgUtil.createRandomVcode() + ",有效期為60秒,如有疑慮請詳詢XXX-XXX-XXXX【XXX中心】")); }
然後執行一下,一般的情況下參數傳遞正確,按照介面文檔的規范來操作的話,都會發送成功的,手機都能收到驗證碼的,然後可能會出現的問題就是:發送的簡訊內容有可能會出現中文亂碼,然後就會發送不成功,按照簡訊平台的要求進行相應的編碼即可。一般都會是UTF-8編碼。
㈨ 用Java調用簡訊介面給手機發送簡訊怎麼寫代碼介面已經有了,是一個url.
那你要做的就是向這個URL發送數據就好,給個例子:
publicclassHttptest1{
8
9publicstaticvoidmain(String[]args){
10
11URLurl=null;
12HttpURLConnectionconn=null;
13OutputStreamoutStream=null;
14InputStreaminStream=null;
15
16try{
17url=newURL("http://219.233.89.7:8090/cgi-bin/mailinterface");
18conn=(HttpURLConnection)url.openConnection();
19conn.setDoOutput(true);
20conn.setDoInput(true);
21
22StringsendXml="<?xmlversion="1.0"encoding="UTF-16"?><!DOCTYPESigMailCommandSYSTEM"SigMail.dtd">";//XML數據
23sendXml+="<SigMailCommandName="checkuser"><ParamName="domainname">test.com.cn</Param>";
24sendXml+="<ParamName="username">admin</Param></SigMailCommand>";
25
26outStream=conn.getOutputStream();
27
28//准備通過CONN對象寫入XML數據
29BufferedWriterbw=newBufferedWriter(newjava.io.OutputStreamWriter(outStream,
30"UTF-16"));
31bw.write(sendXml);
32bw.flush();
33bw.close();
34
35//DataOutputStreamdataOutStream=newDataOutputStream(outStream);
36//dataOutStream.writeChars(xml);
37//dataOutStream.flush();
38//dataOutStream.close();
39
40
41//准備通過CONN對象讀取返回的XML數據
42
43inStream=conn.getInputStream();
44StringBufferreturnXml=newStringBuffer("");
45BufferedReaderrd=newBufferedReader(newInputStreamReader(inStream,
46"UTF-16"));
47for(Stringline=null;(line=rd.readLine())!=null;){
48returnXml.append(line);
49}
50System.out.println(returnXml.toString());
51rd.close();
52}catch(IOExceptionex){
53ex.printStackTrace();
54}finally{
55try{
56if(outStream!=null)
57outStream.close();
58if(inStream!=null)
59inStream.close();
60if(conn!=null)
61conn.disconnect();
62}catch(IOExceptione){
63//TODO自動生成catch塊
64e.printStackTrace();
65}
66}
67
68}
69
70}