📄 web.java
字号:
package com.wireless.sms.sgip.http;
import com.wireless.sms.sgip.http.global.UN_Web;
import com.wireless.sms.sgip.http.global.WebConfig;
import com.wireless.sms.sgip.http.global.WebOrder;
import com.wireless.sms.sgip.http.global.WebSubscription;
/**
* 基于联通短信业务网站反向点播、订购请求实现的接口类
* @used.example:
* <p> UN_Web uw = Web.getWebTemp(0);//获得一个UN_Web接口实现类的实例之一:WebOrder(点播请求)和WebSubscription(订购请求)</p>
* <p> uw.setServiceTag("T");//设置用户操作指令</p>
* <p> uw.setSPNumber("8009");//设置SPnumber</p>
* <p> uw.setUserNumber("13426221080");//设置用户手机号码</p>
* <p> uw.setEncodeKey("27jrWz2sxrVbR+pnyg6jWHhgNk4sZo46");//设置密钥</p>
* <p> uw.setAccessTime(WebConfig.getTime("yyyy-MM-dd HH:mm:ss"));//设置用户操作时间</p>
* <p> Web web = Web.getInstance("http://220.194.49.19:9555/WebOrder.aspx");//必须设置目的地址URL获得一个web实例</p>
* <p> String statusCode = web.process(uw, true);//开始发送反向请求,同时返回请求结果</p>
* @version 1.0
* @author mazy
*
*/
public class Web {
private String requestURL = "";
private static Web instance = null;
private Web() {
}
/**必须设置请求地址URL*/
public static Web getInstance(String requestURL) {
if (instance == null) {
instance = new Web();
}
instance.requestURL = requestURL;
return instance;
}
/**
* 开始处理请求:向请求地址发送反向请求
* @param uw -- 请求携带的bean类
* @param encode_flag -- 是否再进行IE编码,此部分可能会根据不同联通的要求而并不同,一般设置为true
*/
public String process(UN_Web uw, boolean encode_flag) {
String content = "";
if (uw instanceof WebOrder) {
WebOrder _uw = (WebOrder) uw;
content = _uw.getSPNumber()
+ "==" + _uw.getAccessTime() + "=="
+ (encode_flag?encoding(_uw.getEncodeStr()):_uw.getEncodeStr());
// System.out.println(content);
} else if (uw instanceof WebSubscription) {
WebSubscription _uw = (WebSubscription) uw;
content = _uw.getSPNumber()
+ "==" + _uw.getAccessTime() + "=="
+ (encode_flag?encoding(_uw.getEncodeStr()):_uw.getEncodeStr());
// System.out.println(content);
}
return Get_Request.request(requestURL, content);
}
/**获得一个网站订购的实例,默认为点播请求:
* @param mode = 0 点播请求 =1 订购请求
* @return UN_Web 返回实现该接口的两个bean的实例之一:WebOrder(点播请求)和WebSubscription(订购请求)
* */
public static UN_Web getWebTemp(int mode) {
if (mode == 1) {
return new WebSubscription();
}
return new WebOrder();
}
public String getRequestURL() {
return requestURL;
}
/**请求地址,必须设置项目*/
public void setRequestURL(String requestURL) {
this.requestURL = requestURL;
}
/**使用IE编码*/
public static String encoding(String s) {//%E4%B8%AD%E6%8A%A5%E8%82%A1%E7%A5%A8%E4%BF%A1%E6%81%AF
byte[] b;
try {
b = s.getBytes("UTF8");
} catch (java.io.UnsupportedEncodingException e) {
//应该不会执行到这里
e.printStackTrace();
return null;
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
int c = 0xff & (int) b[i];
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')
|| (c >= '0' && c <= '9') || c == '_' || c == '.'
|| c == '-' || c == '*')
sb.append((char) c);
else if (c == ' ')
sb.append("%20");//标准上使用'+',但好像IE里都用%20
else {
sb.append('%');
String s1 = Integer.toHexString(c).toUpperCase();
if (s1.length() == 1)
sb.append('0');
sb.append(s1);
}
}
return sb.toString();
}
/**IE解码*/
public static String decoding(String s) {
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
for (int i = 0; i < s.length(); i++) {
int c = s.charAt(i);
if (c != '%')
out.write(c);
else {
out.write(Integer.parseInt(s.substring(i + 1, i + 3), 16));
i += 2;
}
}
try {
return new String(out.toByteArray(), "UTF8");
} catch (java.io.UnsupportedEncodingException e) {
//应该不会执行到这里
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
UN_Web wo = Web.getWebTemp(0);
wo.setServiceTag("t");
wo.setUserNumber("13426221080");
wo.setEncodeKey("27jrWz2sxrVbR+pnyg6jWHhgNk4sZo46");
wo.setAccessTime(WebConfig.getTime("yyyy-MM-dd HH:mm:ss"));
String resp = Web.getInstance("http://220.194.49.19:9555/WebOrder.aspx").process(wo, true);
System.out.println("resp=" + resp);
// System.out.println(encoding("KIQWNWEQREQWK921343KJASDFASD"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -