- 浏览: 7325952 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
测试飞信免费发送接口API的测试(HTTPClient实现)
使用优点:快捷,方便
使用缺点:用户的各种信息以明文形式在网络中传输不安全.
仅仅用于测试
package cn.com.vnvtrip.fection.sms.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* 读取fection 的配置信息
*
* @author longgangbai
*
*/
public class Env {
private static Logger logger = Logger.getLogger(Env.class.getName());
private static Properties props = null;
private static Env env = null;
static {
// 获取classpath路径配置悉尼性
File file = new File(Env.class
.getResource("/fectionService.properties").getFile());
if (file.exists()) {
try {
InputStream in = new FileInputStream(file);
props = new Properties();
props.load(in);
} catch (IOException e) {
logger.log(Level.WARNING, "加载fection 的配置失败!");
}
} else {
logger.log(Level.WARNING, "fection 的配置文件不存在,请检查..");
}
}
/**
*
*/
private Env() {
}
/**
* 防止获取配置信息发生异步现象
*
*/
public static synchronized Env getEnv() {
if (env == null) {
env = new Env();
}
return env;
}
/**
* 获取配置的 Properties
*
* @return
*/
public Properties getProperties() {
return props;
}
public static void main(String[] args) {
System.out.println(Env.class.getResource("/fectionService.properties")
.getFile());
}
}
package cn.com.vnvtrip.fection.sms.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
/**
*
* @author longgangbai
*
*/
public class HTTPClient {
/**
*
* @param httpurl
* @return
*/
public static String execute(String httpurl) {
// 构建HttpClient的实例的应用
HttpClient httpclient = new HttpClient();
// 创建GET方法的实例
GetMethod getmethod = new GetMethod(httpurl);
// 创建的POST方法的实例 PostMethod postmethod=new PostMethod(httpurl);
// 使用系统提供的默认的恢复策略
getmethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
try {
// 执行GET方法的请求的实例
int statusCode = httpclient.executeMethod(getmethod);
// 查看响应的编码的方式
String responseEncoding = getmethod.getRequestCharSet();
System.out.println("the response encoding is :" + responseEncoding);
// 检测发送是否成功的
if (statusCode != HttpStatus.SC_OK) {
System.out.println("Method failure:"
+ getmethod.getStatusLine());
}
// 得到响应的消息体
byte[] responseBody = getmethod.getResponseBody();
return new String(responseBody);
} catch (HttpException e) {
System.out.println("please check you provided http address!" + e);
} catch (IOException e) {
// 发生网络异常信息
e.printStackTrace();
} finally {
// 释放连接
getmethod.releaseConnection();
}
return null;
}
/**
* 使用HttpClient调用远程servlet
*
* @param httpurl
* @param xmlInfo
* @param map
* @return
*/
@SuppressWarnings("unchecked")
public static InputStream executeHttp(String httpurl, String xmlInfo,
Map<String, String> map) {
HttpClient httpclient = new HttpClient();
// 使用Post发送消息的方法的应用
PostMethod postmethod = new PostMethod(httpurl);
ByteArrayRequestEntity requestEntity = new ByteArrayRequestEntity(
xmlInfo.getBytes(), "text/html; charset=UTF-8");
InputStream inputstream = null;
// 设置请求的实体
postmethod.setRequestEntity(requestEntity);
// 设置请求的格式
try {
// 设置消息头信息
if (map != null) {
for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
Entry<String, String> header = (Entry<String, String>) it
.next();
String key = header.getKey();
String value = header.getValue();
postmethod.setRequestHeader(key, value);
}
}
// 发送消息的方法的
httpclient.executeMethod(postmethod);
// 发送成功接受请求的信息
if (postmethod.getStatusCode() == HttpStatus.SC_OK) {
inputstream = postmethod.getResponseBodyAsStream();
} else {
System.out.println("unexpected failure:"
+ postmethod.getStatusLine());
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
postmethod.releaseConnection();
}
return inputstream;
}
/**
* 使用HttpClient调用远程servlet
*
* @param httpurl
* @param xmlInfo
* @param map
* @return
*/
@SuppressWarnings("unchecked")
public static InputStream executeHttp(String httpurl,
Map<String, String> paramMaps, Map<String, String> map) {
HttpClient httpclient = new HttpClient();
// 使用Post发送消息的方法的应用
PostMethod postmethod = new PostMethod(httpurl);
InputStream inputstream = null;
// 设置请求的填入各个表单域的值
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
NameValuePair[] params = new NameValuePair[paramMaps.size()];
if (paramMaps != null) {
for (Iterator it = paramMaps.entrySet().iterator(); it.hasNext();) {
Entry<String, String> header = (Entry<String, String>) it
.next();
String key = header.getKey();
String value = header.getValue();
NameValuePair param = new NameValuePair();
param.setName(key);
param.setValue(value);
paramList.add(param);
}
}
paramList.toArray(params);
postmethod.setRequestBody(params);
// 设置请求的格式
try {
if (map != null) {
// 设置消息头信息
for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
Entry<String, String> header = (Entry<String, String>) it
.next();
String key = header.getKey();
String value = header.getValue();
postmethod.setRequestHeader(key, value);
}
}
// 发送消息的方法的
int statusCode = httpclient.executeMethod(postmethod);
// 自动转向的方式的应用
// HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发301或者302
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
Header locationHeader = postmethod.getRequestHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out
.println("the page was redirected to:" + location);
} else {
System.out.println("Location field value is null!");
}
}
// 发送成功接受请求的信息
if (postmethod.getStatusCode() == HttpStatus.SC_OK) {
inputstream = postmethod.getResponseBodyAsStream();
} else {
System.out.println("unexpected failure:"
+ postmethod.getStatusLine());
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
postmethod.releaseConnection();
}
return inputstream;
}
}
package cn.com.vnvtrip.fection.sms.service;
import java.io.InputStream;
import java.util.Map;
import cn.com.vnvtrip.fection.sms.utils.HTTPClient;
public class SMSService {
private static SMSService smsService = null;
private SMSService() {
}
public static SMSService getSmsService() {
if (smsService == null) {
smsService = new SMSService();
}
return smsService;
}
/**
*
* @param httpurl
* @return
*/
public String execute(String httpurl) {
return HTTPClient.execute(httpurl);
}
/**
* 使用HttpClient调用远程servlet
*
* @param httpurl
* @param xmlInfo
* @param map
* @return
*/
@SuppressWarnings("unchecked")
public InputStream executeHttp(String httpurl, String xmlInfo,
Map<String, String> map) {
return HTTPClient.executeHttp(httpurl, xmlInfo, map);
}
/**
* 使用HttpClient调用远程servlet
*
* @param httpurl
* @param xmlInfo
* @param map
* @return
*/
@SuppressWarnings("unchecked")
public InputStream executeHttp(String httpurl,
Map<String, String> paramMaps, Map<String, String> map) {
return HTTPClient.executeHttp(httpurl, paramMaps, map);
}
}
- WebFection.rar (749.1 KB)
- 下载次数: 171
发表评论
-
[转]Jython初探
2014-01-07 11:19 2404转载自: ... -
ireport导出各种格式(pdf,excel,word,html,print)
2013-05-02 16:59 10039import java.io.IOException; ... -
【转】使用Atomikos Transactions Essentials实现多数据源JTA分布式事务
2013-04-03 12:11 6791Atomikos数据源配置方法有三种 Atomikos数 ... -
【转】Apache Thrift入门1-架构&介绍
2013-04-02 13:26 2026Thrift 是什么? Thrift ... -
【转】Thrift入门及Java实例演示
2013-04-02 12:47 2568目录: 概述 下载配置 基本概念 数据类型 ... -
【转】Thrift入门试用
2013-04-02 12:39 2172在新的项目中公司在平台内部系统间使用Thrift通讯,都没 ... -
【转】thrift的安装
2013-04-02 12:38 2087一、ubuntu下thrift的安装 1.下载源代码 ... -
GIS的学习(二十五)geoserver wms中的各种操作API详细讲解和使用
2012-09-10 17:42 9688官方geoserver中WMS服务中几种操作的API的详细说明 ... -
POI3.8组件研究(九)----让POI架起Java与Office之间的桥梁
2012-06-17 14:37 4311本文将阐述如何用POI来读取/写入完整的Excel文 ... -
POI3.8组件研究(八)--基于SXSSF (Streaming Usermodel API)的写文件
2012-06-17 14:17 14425在POI3.8中SXSSF仅仅支持excel2 ... -
POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析
2012-06-17 14:00 5358针对Event API事件解析仅仅支持excel97~ ... -
POI3.8组件研究(六)---struts2.0 视图层文件页面点击导出
2012-06-17 13:23 2410在struts2.0中点击导出按钮将信息导出为exce ... -
POI3.8组件研究(五)---excel文件内容抽取为文本
2012-06-15 09:15 4361在一个搜索引擎的使用中需要将各种文件转化为文本 ... -
POI3.8组件研究(四)--Event API (HSSF Only)事件的解析
2012-06-14 17:37 9051通过eventusermodel读取文件 ... -
POI3.8组件研究(二)---基于User API (HSSF and XSSF)解析Excel2003和2007文件
2012-06-14 09:46 3210在解析生成excel2003和 ... -
POI3.8组件研究(一)---基于User API (HSSF and XSSF)解析Excel2003和2007文件
2012-06-14 09:29 5343在以前的Excel解析时候,我们通常需要编写Ex ... -
EasyPOI的使用
2012-02-12 17:06 5293EasyPOI 的目的是封装了poi的写excel的API。 ... -
Commons-net FTPClient上传下载的封装
2011-08-25 08:30 11502在项目中使用到FTP功能,于是采用类似Spri ... -
Java将第三方jar文件打包到一个jar中的插件(fatjar)
2011-08-19 22:17 4327<!-- google_ad_section_star ... -
Apache的Commons-configuration自动加载特性
2011-07-24 19:04 4057在一些项目可能配置文件经常变化,配置文件的类型可能 ...
相关推荐
飞信是中国移动推出的一种即时通讯服务,它提供了API供开发者集成到自己的应用程序中,实现短信的自动化发送。在这个简单的例子中,我们将深入探讨如何在Java环境中利用飞信接口来发送短信。 首先,你需要了解飞信...
Java利用飞信API发送短信是一种常见的企业级应用实践,它允许开发者通过编程方式与中国移动的飞信服务进行交互,实现自动化或批量发送短信的功能。在本文中,我们将深入探讨这一主题,了解如何在Java环境中集成飞信...
- **批量发送**:如果需要向多个号码发送相同短信,可以使用飞信提供的批量发送接口,减少接口调用次数,提高效率。 - **缓存SessionKey**:SessionKey有一定的有效期,可以在有效期内缓存,避免频繁的身份验证请求...
3. **发起POST请求**:使用HttpClient的PostAsync方法发送POST请求到飞信的短信发送接口URL。将构建好的请求参数作为请求体传递。 4. **处理响应**:当服务器返回响应时,我们需检查HTTP状态码,如200表示成功,...
非官方的飞信API,如"feixinapi",通常是由社区开发者或者独立程序员根据公开的信息自行实现的,旨在提供给其他开发者用于发送短信等功能。在这个项目中,我们看到的是一个基于Java语言的实现,名为"feixinapi",它...
总结,这个程序展示了如何使用Java和HttpClient来实现一个简单的飞信消息发送应用,同时也涉及到了网络编程、API调用、测试和安全等多个IT领域的知识点。对于学习和理解这些技术的人来说,这是一个很好的实践项目。
// 假设这是飞信发送短信的API地址 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Authorization", ...
ASP.NET飞信是一款基于ASP.NET技术开发的应用程序,主要用于通过调用飞信接口来实现短信的发送功能。飞信是中国移动推出的一种即时通讯服务,...通过结合理论知识与实践,开发者可以构建一个稳定且高效的飞信发送系统。
由于飞信的官方API可能有限制,开发者可能需要通过模拟登录、抓包分析等方式获取接口信息。这涉及到网络编程和协议解析的知识。 在ASP.NET中,可以使用HttpWebRequest或HttpClient类来发送HTTP请求。登录时,可能...