[TS懶人包] [保險服務]

2008年9月17日 星期三

多手機號碼簡訊發送程式

這隻程式是臨時起意後…寫出來的東西…使用台灣簡訊的 API 來作發送…所以要使用的人需要有台灣簡訊的帳號、密碼,並需自行購買簡訊通數…不過這隻程式我自己還沒測試過…要使用的人請自行先測試看看…目前吃的檔案格式為日上發發發的檔案格式。

這隻程式同樣會去讀 signal.txt 這個檔案…並對內容作檢查…如果倉位有發生變化…會將目前倉位和目前價位用簡訊傳出…

這是日上所需要的 txt 格式
0,1080620,134500,1,0,7778,1
基本上很簡單的一直檢查目前倉位是不是有產生變化…有變化就發簡訊…
有需要的…程式碼如下…使用 java 編寫…另外這個東西絕絕對對需要自行修改…小弟我不負責客制化的業務…= =


import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.Calendar;
import java.text.SimpleDateFormat;

public class TwSMSJavaAPI
{
public static void main(String args[]) throws IOException
{
String phNumber[]={"", ""}; //手機號碼

Calendar rightNow = Calendar.getInstance();
SimpleDateFormat fmt = new SimpleDateFormat("HHmm");
String sysDatatime = fmt.format(rightNow.getTime());

String signalold = "0";

while(Integer.valueOf(sysDatatime).intValue() > 840 && Integer.valueOf(sysDatatime).intValue() < 1350)
{
BufferedReader br = new BufferedReader(new FileReader("D:/signal.txt")); //檔案路徑、名稱
String temp;
String[] signal;
temp = br.readLine();

signal = temp.split(",");

if (Integer.valueOf(sysDatatime).intValue() < 844)
{
signalold = signal[3];
}

if (Integer.valueOf(sysDatatime).intValue() > 844 && !(signalold.equals(signal[3])))
{
for (int i = 0; i < phNumber.length; i++)
{
sms(phNumber[i], signal[3], signal[5]);
}
signalold = signal[3];
}

try
{
Thread.sleep(1000);
}catch (InterruptedException e)
{
}
}
}
public static int sms(String phNumber, String position, String price)
{
try
{
// 設定變數
Socket socket;
String len;
InputStream Is;
OutputStream Os;
DataInputStream DIS;
PrintStream PS;
String msg = "";
String MSGData = "";
String GetData = "";
String MsgID = "";

// 設定參數
String username = ""; // 帳號
String password = ""; // 密碼
String type = "now"; // 發送型態
String mobile = phNumber; // 電話
String message = "目前倉位:" + position + ", 目前價位:" + price; // 簡訊內容
//String message = new String("簡訊測試".getBytes(),"big5");
String encoding = "big5"; // 簡訊內容編碼
String popup = ""; // 使用 POPUP 顯示
String mo = ""; // 使用雙向簡訊
String vldtime = ""; // 簡訊有效期限
String dlvtime = ""; // 預約時間

int Num = 0;
msg = "username="+username+"&password="+password+"&type="+type+"&encoding="+encoding+"&popup="+popup+"&mo="+mo+"&mobile="+mobile+"&message="+message+"&vldtime="+vldtime+"&dlvtime="+dlvtime;
Num = msg.length();

MSGData = MSGData+"POST /send_sms.php HTTP/1.1\r\n";
MSGData = MSGData+"Host: api.twsms.com\r\n";
MSGData = MSGData+"Content-Length: "+Num+"\r\n";
MSGData = MSGData+"Content-Type: application/x-www-form-urlencoded\r\n";
MSGData = MSGData+"Connection: Close\r\n\r\n";
MSGData = MSGData+msg+"\r\n";

// 開始送簡訊資料
socket=new Socket("api.twsms.com",80);

//獲得對應 socket 的輸入/輸出流
Is=socket.getInputStream();
Os=socket.getOutputStream();

//建立數據流
DIS=new DataInputStream(Is);

PS=new PrintStream(Os);
PS.println(MSGData);

int i=1;

while(true){
GetData = DIS.readLine();
if (i == 10)
{
MsgID = GetData;
}
if (GetData == null)break;
i++;
}

//關閉連接
DIS.close(); //關閉數據輸入流
PS.close(); //關閉數據輸出流
Is.close(); //關閉輸入流
Os.close(); //關閉輸出流
socket.close(); //關閉 socket

// 結果輸出
System.out.println("回傳碼:" + MsgID);
}
catch(Exception e){
System.out.println("無法連接 TwSMS API Server!");
}
return 0;
}
}

2 則留言:

  1. 我想用VB2008來寫一個可以發簡訊的程式(台灣簡訊)
    請問我應該要怎麼寫?

    回覆刪除
    回覆
    1. 台灣簡訊有 api 可以使用…直接呼叫即可…

      刪除

請留下您的大名…匿名者恕不回應…

Related Posts Plugin for WordPress, Blogger...