`
longgangbai
  • 浏览: 7331554 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

飞信免费发送接口API的测试(HTTPClient实现)

阅读更多

测试飞信免费发送接口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);
 }
}

分享到:
评论

相关推荐

    JAVA利用飞信接口发送短信

    飞信是中国移动推出的一种即时通讯服务,它提供了API供开发者集成到自己的应用程序中,实现短信的自动化发送。在这个简单的例子中,我们将深入探讨如何在Java环境中利用飞信接口来发送短信。 首先,你需要了解飞信...

    java利用飞信API发送短信

    Java利用飞信API发送短信是一种常见的企业级应用实践,它允许开发者通过编程方式与中国移动的飞信服务进行交互,实现自动化或批量发送短信的功能。在本文中,我们将深入探讨这一主题,了解如何在Java环境中集成飞信...

    asp.net利用飞信短信接口免费发送信息源码

    - **批量发送**:如果需要向多个号码发送相同短信,可以使用飞信提供的批量发送接口,减少接口调用次数,提高效率。 - **缓存SessionKey**:SessionKey有一定的有效期,可以在有效期内缓存,避免频繁的身份验证请求...

    C#飞信 调用最新接口

    3. **发起POST请求**:使用HttpClient的PostAsync方法发送POST请求到飞信的短信发送接口URL。将构建好的请求参数作为请求体传递。 4. **处理响应**:当服务器返回响应时,我们需检查HTTP状态码,如200表示成功,...

    feixinapi:非官方飞信API发送短信接口

    非官方的飞信API,如"feixinapi",通常是由社区开发者或者独立程序员根据公开的信息自行实现的,旨在提供给其他开发者用于发送短信等功能。在这个项目中,我们看到的是一个基于Java语言的实现,名为"feixinapi",它...

    利用第三方接口跟好友发飞信的程序

    总结,这个程序展示了如何使用Java和HttpClient来实现一个简单的飞信消息发送应用,同时也涉及到了网络编程、API调用、测试和安全等多个IT领域的知识点。对于学习和理解这些技术的人来说,这是一个很好的实践项目。

    利用飞信免费发短信代码演示

    // 假设这是飞信发送短信的API地址 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Authorization", ...

    asp.net飞信

    ASP.NET飞信是一款基于ASP.NET技术开发的应用程序,主要用于通过调用飞信接口来实现短信的发送功能。飞信是中国移动推出的一种即时通讯服务,...通过结合理论知识与实践,开发者可以构建一个稳定且高效的飞信发送系统。

    ASP.NET获得飞信好友,绝对好用。不好用你砍我

    由于飞信的官方API可能有限制,开发者可能需要通过模拟登录、抓包分析等方式获取接口信息。这涉及到网络编程和协议解析的知识。 在ASP.NET中,可以使用HttpWebRequest或HttpClient类来发送HTTP请求。登录时,可能...

Global site tag (gtag.js) - Google Analytics