亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? clickatellhttpgateway.java

?? 短線收發
?? JAVA
字號:
// SMSLib for Java v3
// A Java API library for sending and receiving SMS via a GSM modem
// or other supported gateways.
// Web Site: http://www.smslib.org
//
// Copyright (C) 2002-2008, Thanasis Delenikas, Athens/GREECE.
// SMSLib is distributed under the terms of the Apache License version 2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package org.smslib.http;

import java.util.*;
import java.io.*;
import java.net.*;
import org.smslib.*;

/**
 * Gateway for Clickatell bulk operator (http://www.clickatell.com)
 * Outbound only - implements HTTP interface.
 */
public class ClickatellHTTPGateway extends HTTPGateway
{
	private String apiId, username, password;

	private String sessionId;

	private KeepAlive keepAlive;

	Object SYNC_Commander;

	public ClickatellHTTPGateway(String id, String apiId, String username, String password)
	{
		super(id);
		started = false;
		this.apiId = apiId;
		this.username = username;
		this.password = password;
		this.sessionId = null;
		this.from = "";
		SYNC_Commander = new Object();
		attributes = AGateway.GatewayAttributes.SEND | AGateway.GatewayAttributes.WAPSI | AGateway.GatewayAttributes.CUSTOMFROM | AGateway.GatewayAttributes.BIGMESSAGES | AGateway.GatewayAttributes.FLASHSMS;
	}

	public void startGateway() throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		logInfo("Starting gateway.");
		connect();
		super.startGateway();
	}

	public void stopGateway() throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		logInfo("Stopping gateway.");
		super.stopGateway();
		sessionId = null;
		if (keepAlive != null)
		{
			keepAlive.interrupt();
			keepAlive.join();
			keepAlive = null;
		}
	}

	public float queryBalance() throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		URL url;
		List request = new ArrayList();
		List response;
		if (sessionId == null) throw new GatewayException("Internal Clickatell Gateway error.");
		url = new URL("http://api.clickatell.com/http/getbalance");
		request.add(new HttpHeader("session_id", sessionId, false));
		synchronized (SYNC_Commander)
		{
			response = HttpPost(url, request);
		}
		if (((String) response.get(0)).indexOf("Credit:") == 0) return Float.parseFloat(((String) response.get(0)).substring(((String) response.get(0)).indexOf(':') + 1));
		else return -1;
	}

	public boolean queryCoverage(OutboundMessage msg) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		URL url;
		List request = new ArrayList();
		List response;
		if (sessionId == null) throw new GatewayException("Internal Clickatell Gateway error.");
		url = new URL("http://api.clickatell.com/utils/routeCoverage.php");
		request.add(new HttpHeader("session_id", sessionId, false));
		request.add(new HttpHeader("msisdn", msg.getRecipient().substring(1), false));
		synchronized (SYNC_Commander)
		{
			response = HttpPost(url, request);
		}
		if (((String) response.get(0)).indexOf("OK") == 0) return true;
		else return false;
	}

	public DeliveryStatuses queryMessage(String refNo) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		URL url;
		List request = new ArrayList();
		List response;
		int pos;
		if (sessionId == null) throw new GatewayException("Internal Clickatell Gateway error.");
		url = new URL("http://api.clickatell.com/http/querymsg");
		request.add(new HttpHeader("session_id", sessionId, false));
		request.add(new HttpHeader("apimsgid", refNo, false));
		synchronized (SYNC_Commander)
		{
			response = HttpPost(url, request);
		}
		pos = ((String) response.get(0)).indexOf("Status:");
		deliveryErrorCode = Integer.parseInt(((String) response.get(0)).substring(pos + 7).trim());
		switch (deliveryErrorCode)
		{
			case 1:
				return DeliveryStatuses.UNKNOWN;
			case 2:
			case 3:
			case 8:
			case 11:
				return DeliveryStatuses.KEEPTRYING;
			case 4:
				return DeliveryStatuses.DELIVERED;
			case 5:
			case 6:
			case 7:
				return DeliveryStatuses.ABORTED;
			case 9:
			case 10:
				return DeliveryStatuses.ABORTED;
			case 12:
				return DeliveryStatuses.ABORTED;
			default:
				return DeliveryStatuses.UNKNOWN;
		}
	}

	void connect() throws GatewayException, IOException
	{
		try
		{
			if (!authenticate()) throw new GatewayException("Cannot authenticate to Clickatell.");
			keepAlive = new KeepAlive();
		}
		catch (MalformedURLException e)
		{
			throw new GatewayException("Internal Clickatell Gateway error.");
		}
	}

	private boolean authenticate() throws IOException, MalformedURLException
	{
		URL url;
		List request = new ArrayList();
		List response;
		logDebug("Authenticate().");
		url = new URL("http://api.clickatell.com/http/auth");
		request.add(new HttpHeader("api_id", apiId, false));
		request.add(new HttpHeader("user", username, false));
		request.add(new HttpHeader("password", password, false));
		synchronized (SYNC_Commander)
		{
			response = HttpPost(url, request);
		}
		if (((String) response.get(0)).indexOf("ERR:") == 0)
		{
			sessionId = null;
			return false;
		}
		else
		{
			sessionId = ((String) response.get(0)).substring(4);
			return true;
		}
	}

	private boolean ping() throws IOException, MalformedURLException
	{
		URL url;
		List request = new ArrayList();
		List response;
		logDebug("Ping()");
		url = new URL("http://api.clickatell.com/http/ping");
		request.add(new HttpHeader("session_id", sessionId, false));
		synchronized (SYNC_Commander)
		{
			response = HttpPost(url, request);
		}
		if (((String) response.get(0)).indexOf("ERR:") == 0) return false;
		else return true;
	}

	public boolean sendMessage(OutboundMessage msg) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		URL url;
		List request = new ArrayList();
		List response;
		int requestFeatures = 0;
		boolean ok = false;
		if (sessionId == null)
		{
			logError("No session defined.");
			msg.setFailureCause(FailureCauses.GATEWAY_FAILURE);
			return false;
		}
		logDebug("sendMessage()");
		try
		{
			if (msg.getType() == MessageTypes.OUTBOUND) url = new URL("http://api.clickatell.com/http/sendmsg");
			else if (msg.getType() == MessageTypes.WAPSI) url = new URL("http://api.clickatell.com/mms/si_push");
			else
			{
				msg.setFailureCause(FailureCauses.BAD_FORMAT);
				logError("Incorrect message format.");
				return false;
			}
			request.add(new HttpHeader("session_id", sessionId, false));
			request.add(new HttpHeader("to", msg.getRecipient().substring(1), false));
			request.add(new HttpHeader("concat", "3", false));
			if (msg.getPriority() == MessagePriorities.LOW) request.add(new HttpHeader("queue", "3", false));
			else if (msg.getPriority() == MessagePriorities.NORMAL) request.add(new HttpHeader("queue", "2", false));
			else if (msg.getPriority() == MessagePriorities.HIGH) request.add(new HttpHeader("queue", "1", false));
			if (msg.getFrom() != null && msg.getFrom().length() != 0) request.add(new HttpHeader("from", msg.getFrom(), false));
			else if (from != null && from.length() != 0) request.add(new HttpHeader("from", from, false));
			if (msg.getFlashSms()) request.add(new HttpHeader("msg_type", "SMS_FLASH", false));
			
			if (msg.getType() == MessageTypes.OUTBOUND)
			{
				if (msg.getEncoding() == MessageEncodings.ENC7BIT) request.add(new HttpHeader("text", msg.getText(), false));
				else if (msg.getEncoding() == MessageEncodings.ENCUCS2)
				{
					request.add(new HttpHeader("unicode", "1", false));
					request.add(new HttpHeader("text", msg.getText(), true));
				}
			}
			else if (msg.getType() == MessageTypes.WAPSI)
			{
				request.add(new HttpHeader("si_id", msg.getId(), false));
				if (((OutboundWapSIMessage) msg).getCreateDate() != null) request.add(new HttpHeader("si_created", formatDateUTC(((OutboundWapSIMessage) msg).getCreateDate()), false));
				if (((OutboundWapSIMessage) msg).getExpireDate() != null) request.add(new HttpHeader("si_expires", formatDateUTC(((OutboundWapSIMessage) msg).getExpireDate()), false));
				request.add(new HttpHeader("si_action", formatSignal(((OutboundWapSIMessage) msg).getSignal()), false));
				request.add(new HttpHeader("si_url", ((OutboundWapSIMessage) msg).getUrl().toString(), false));
				request.add(new HttpHeader("si_text", msg.getText(), false));
			}

			if (msg.getStatusReport()) request.add(new HttpHeader("deliv_ack", "1", false));
			if ((from != null && from.length() != 0) || (msg.getFrom() != null && msg.getFrom().length() != 0)) requestFeatures += 16 + 32;
			if (msg.getFlashSms()) requestFeatures += 512;
			if (msg.getStatusReport()) requestFeatures += 8192;
			request.add(new HttpHeader("req_feat", "" + requestFeatures, false));
			synchronized (SYNC_Commander)
			{
				response = HttpPost(url, request);
			}
			if (((String) response.get(0)).indexOf("ID:") == 0)
			{
				msg.setRefNo(((String) response.get(0)).substring(4));
				msg.setDispatchDate(new Date());
				msg.setGatewayId(gtwId);
				msg.setMessageStatus(MessageStatuses.SENT);
				incOutboundMessageCount();
				ok = true;
			}
			else if (((String) response.get(0)).indexOf("ERR:") == 0)
			{
				switch (Integer.parseInt(((String) response.get(0)).substring(5, 8)))
				{
					case 1:
					case 2:
					case 3:
					case 4:
					case 5:
					case 6:
					case 7:
						msg.setFailureCause(FailureCauses.GATEWAY_AUTH);
						break;
					case 101:
					case 102:
					case 105:
					case 106:
					case 107:
					case 112:
					case 116:
					case 120:
						msg.setFailureCause(FailureCauses.BAD_FORMAT);
						break;
					case 114:
						msg.setFailureCause(FailureCauses.NO_ROUTE);
						break;
					case 301:
					case 302:
						msg.setFailureCause(FailureCauses.NO_CREDIT);
						break;
					default:
						msg.setFailureCause(FailureCauses.UNKNOWN);
						break;
				}
				msg.setRefNo(null);
				msg.setDispatchDate(null);
				msg.setMessageStatus(MessageStatuses.FAILED);
				ok = false;
			}
		}
		catch (MalformedURLException e)
		{
			logError("Malformed URL.", e);
		}
		catch (IOException e)
		{
			logError("I/O error.", e);
		}
		return ok;
	}

	private String formatDateUTC(Date d)
	{
		String strDate = "", tmp = "";
		Calendar cal = Calendar.getInstance();
		cal.setTime(d);
		strDate = String.valueOf(cal.get(Calendar.YEAR));
		tmp = String.valueOf(cal.get(Calendar.MONTH) + 1);
		if (tmp.length() != 2) tmp = "0" + tmp;
		strDate += "-" + tmp;
		tmp = String.valueOf(cal.get(Calendar.DATE));
		if (tmp.length() != 2) tmp = "0" + tmp;
		strDate += "-" + tmp;
		tmp = String.valueOf(cal.get(Calendar.HOUR_OF_DAY));
		if (tmp.length() != 2) tmp = "0" + tmp;
		strDate += "T" + tmp;
		tmp = String.valueOf(cal.get(Calendar.MINUTE));
		if (tmp.length() != 2) tmp = "0" + tmp;
		strDate += ":" + tmp;
		tmp = String.valueOf(cal.get(Calendar.SECOND));
		if (tmp.length() != 2) tmp = "0" + tmp;
		strDate += ":" + tmp + "Z";
		return strDate;
	}

	private String formatSignal(WapSISignals signal)
	{
		if (signal == WapSISignals.NONE) return "signal-none";
		else if (signal == WapSISignals.LOW) return "signal-low";
		else if (signal == WapSISignals.MEDIUM) return "signal-medium";
		else if (signal == WapSISignals.HIGH) return "signal-high";
		else if (signal == WapSISignals.DELETE) return "signal-delete";
		else return "signal-none";
	}

	private class KeepAlive extends Thread
	{
		public KeepAlive()
		{
			setPriority(MIN_PRIORITY);
			start();
		}

		public void run()
		{
			logDebug("KeepAlive thread started.");
			while (true)
			{
				try
				{
					sleep(10 * 60 * 1000);
					if (sessionId == null) break;
					logDebug("** KeepAlive START **");
					synchronized (SYNC_Commander)
					{
						ping();
					}
					logDebug("** KeepAlive END **");
				}
				catch (InterruptedException e)
				{
					if (sessionId == null) break;
				}
				catch (Exception e)
				{
				}
			}
			logDebug("KeepAlive thread ended.");
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美色图小说| 久久久久久毛片| 亚洲18影院在线观看| 日本韩国欧美三级| 视频一区二区三区入口| 欧美一区二区三区四区视频| 日本麻豆一区二区三区视频| 精品国产免费一区二区三区香蕉| 精品制服美女久久| 国产精品三级视频| 欧美无砖砖区免费| 免费美女久久99| 国产欧美精品一区aⅴ影院| 久久婷婷国产综合国色天香| 国产在线观看一区二区| 国产精品免费av| 欧美日韩在线观看一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久草这里只有精品视频| ww久久中文字幕| 91丨九色丨黑人外教| 午夜精品一区二区三区免费视频 | 97超碰欧美中文字幕| 亚洲欧美电影一区二区| 欧美精品久久久久久久久老牛影院| 美女一区二区在线观看| 国产欧美日本一区视频| 欧美三级日本三级少妇99| 激情偷乱视频一区二区三区| 亚洲卡通动漫在线| 精品国产91久久久久久久妲己 | 欧美视频一区二| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品免费aⅴ片在线观看| 欧美精品少妇一区二区三区| 国产成人免费在线观看| 午夜影视日本亚洲欧洲精品| 欧美精品一区二区在线播放| 欧美在线观看一二区| 国产成人啪免费观看软件| 亚洲第一精品在线| 亚洲免费观看视频| 久久精品日产第一区二区三区高清版 | 欧美xxxxx牲另类人与| 91麻豆成人久久精品二区三区| 毛片不卡一区二区| 亚洲第一主播视频| 1000部国产精品成人观看| 欧美成人福利视频| 欧美日本一道本| 91美女精品福利| 高清久久久久久| 精品一区在线看| 色婷婷久久久久swag精品| 国产精品综合一区二区三区| 亚洲.国产.中文慕字在线| 亚洲色图制服诱惑| 久久久精品2019中文字幕之3| 日韩午夜小视频| 欧美日韩高清影院| 色美美综合视频| 北岛玲一区二区三区四区| 国产黄人亚洲片| 久久不见久久见免费视频7 | 在线看不卡av| 99热99精品| 风间由美一区二区三区在线观看 | 亚洲a一区二区| 亚洲综合激情小说| 亚洲欧美一区二区不卡| 国产精品久久久久久久久免费相片| 精品国产一区二区在线观看| 日韩一级免费一区| 欧美一区二区私人影院日本| 欧美日韩激情一区二区三区| 欧美日韩精品一区视频| 欧美精品第一页| 欧美日本在线看| 欧美一区二区视频在线观看 | 欧美精品色综合| 91精品国产综合久久精品| 欧美精品日韩精品| 日韩一区二区在线看| 欧美精品成人一区二区三区四区| 欧美人动与zoxxxx乱| 欧美日韩国产乱码电影| 欧美一级久久久久久久大片| 精品噜噜噜噜久久久久久久久试看| 精品久久久久久久久久久院品网| 2020国产精品| 国产精品久久久一区麻豆最新章节| 亚洲欧洲www| 亚洲国产精品一区二区尤物区| 亚洲一级二级三级| 亚洲女同一区二区| 日韩欧美电影一区| 久久新电视剧免费观看| 久久精品亚洲一区二区三区浴池| 国内精品伊人久久久久av一坑| 国模大尺度一区二区三区| 国产精品一区专区| 91一区在线观看| 色综合久久久久综合99| 欧美老肥妇做.爰bbww| 日韩精品一区二区三区swag| 欧美激情一区不卡| 亚洲一级电影视频| 国产在线国偷精品产拍免费yy | 日韩综合小视频| 九一久久久久久| 国产一区二区三区四区五区美女| 国产成人av资源| 欧美色综合网站| 精品国产青草久久久久福利| 亚洲欧美一区二区三区孕妇| 男人的天堂亚洲一区| 成人动漫一区二区三区| 欧美日韩日日摸| 久久久99精品久久| 亚洲电影中文字幕在线观看| 韩国精品主播一区二区在线观看 | 国产精品国产三级国产普通话99 | 亚洲日本在线天堂| 国产综合色视频| 欧美在线你懂的| 国产精品日产欧美久久久久| 偷窥少妇高潮呻吟av久久免费| 国产激情一区二区三区| 91精品综合久久久久久| 中文字幕一区二区三区四区| 裸体歌舞表演一区二区| 日本韩国视频一区二区| 国产婷婷色一区二区三区四区| 一区二区日韩av| 懂色av中文字幕一区二区三区 | 国产老肥熟一区二区三区| 欧美性生活久久| 国产精品久久夜| 九色综合国产一区二区三区| 欧美日韩一二三区| 国产精品国产精品国产专区不蜜| 美女网站色91| 欧美日韩一级二级| www.66久久| 国产成人精品影视| 欧美色网站导航| 国产精品美女久久福利网站| 男男视频亚洲欧美| 中文文精品字幕一区二区| 日韩不卡在线观看日韩不卡视频| 91视视频在线直接观看在线看网页在线看 | 国产精品青草综合久久久久99| 日本在线不卡一区| 欧美无砖专区一中文字| 亚洲天堂av老司机| 91在线精品一区二区| 国产精品色一区二区三区| 国产精品69毛片高清亚洲| 精品国产一区二区三区av性色| 丝袜美腿亚洲色图| 在线播放欧美女士性生活| 亚洲午夜激情网页| 欧美影院午夜播放| 一区二区在线观看视频| 色偷偷久久一区二区三区| 亚洲色图另类专区| 91行情网站电视在线观看高清版| 亚洲日本中文字幕区| 一本一本大道香蕉久在线精品| 国产精品免费久久| 色综合久久综合网欧美综合网| 亚洲色图在线播放| 欧美三级电影精品| 日韩在线卡一卡二| 欧美mv日韩mv国产网站| 国模无码大尺度一区二区三区| 久久综合久久综合久久| 国产精品资源网| 国产精品视频第一区| 97se亚洲国产综合自在线观| 亚洲尤物视频在线| 这里只有精品99re| 精品一区二区三区久久| 久久久精品2019中文字幕之3| 成人性生交大片免费看中文| 中文字幕一区日韩精品欧美| 欧美亚洲综合久久| 久久国产综合精品| 国产清纯美女被跳蛋高潮一区二区久久w | 国产无人区一区二区三区| 成人精品视频一区二区三区 | 欧美午夜精品久久久久久超碰| 亚洲成av人片观看| 日韩精品在线一区| 国产.欧美.日韩| 亚洲一区国产视频| 国产一区二区女| 99久久777色| 欧美一级黄色片| 成人精品国产免费网站|