使用httpclient实现http接口调用实例[通俗易懂]

使用httpclient实现http接口调用实例[通俗易懂]使用httpclient实现http接口调用实例假设服务接口如下:接口地址:http://192.168.0.1/service/sendsms请求方式:post需要传递参数:c={“uid”:”10000″,”title”:”testatitle”,”content”:”thisisatest”}参数内容为json格式输出:{result:0,cod

大家好,又见面了,我是你们的朋友全栈君。

使用httpclient实现http接口调用实例

假设服务接口如下:

接口地址: http://192.168.0.1/service/sendsms

请求方式: post

需要传递参数: c= {“uid”:”10000″,”title”:”test a title”,”content”:”this is a test”}

参数内容为json格式

输出:{result:0,code:”success”} 

格式为json格式:result:1 .成功,0. 失败

code: 为提示信息

客户端调用代码:使用httpclient-4.0.1.jar

 

package com.yanek.test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONObject;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class TestSendSMS {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
		String uid="12345678";
		String title="test";
		String content="test a content";
		String ret=sendSms(uid ,title,content);
		System.out.println(ret);

		if(ret.indexOf("失败")<0)
		{
			System.out.println("成功发送sms");
		}
		else
		{
			System.out.println("失败发送");
		}

	}
	
	

	public static String sendSms(String uid,String title,String content){
		HttpClient httpclient = new DefaultHttpClient();
		String smsUrl="http://192.168.0.1/service/sendsms";
		HttpPost httppost = new HttpPost(smsUrl);
		String strResult = "";
		
		try {
			
				List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
				JSONObject jobj = new JSONObject();
				jobj.put("uid", uid);
				jobj.put("title", title);
				jobj.put("content",content);
				
				
				nameValuePairs.add(new BasicNameValuePair("msg", getStringFromJson(jobj)));
				httppost.addHeader("Content-type", "application/x-www-form-urlencoded");
				httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
				
				HttpResponse response = httpclient.execute(httppost);
				if (response.getStatusLine().getStatusCode() == 200) {
					/*读返回数据*/
					String conResult = EntityUtils.toString(response
							.getEntity());
					JSONObject sobj = new JSONObject();
					sobj = sobj.fromObject(conResult);
					String result = sobj.getString("result");
					String code = sobj.getString("code");
					if(result.equals("1")){
						strResult += "发送成功";
					}else{
						strResult += "发送失败,"+code;
					}
					
				} else {
					String err = response.getStatusLine().getStatusCode()+"";
					strResult += "发送失败:"+err;
				}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return strResult;
	}

	
	private static String getStringFromJson(JSONObject adata) {
		StringBuffer sb = new StringBuffer();
		sb.append("{");
		for(Object key:adata.keySet()){
			sb.append("\""+key+"\":\""+adata.get(key)+"\",");
		}
		String rtn = sb.toString().substring(0, sb.toString().length()-1)+"}";
		return rtn;
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142313.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言中的移位运算

    C语言中的移位运算移位运算移位运算包括左移和右移左移运算:x&amp;lt;&amp;lt;k:x左移k位,并在右端补零。右移运算:逻辑右移:x&amp;gt;&amp;gt;k:x右移k位,并在左端补零。算术右移:x&amp;gt;&amp;gt;k:x右移k位,并在左端补最高有效位的值。下表为对一个8位参数x的两个不同的值做不同的一位操作得到的结果:操作值参数x[01100011][10010101]x&amp;l

    2022年7月13日
    14
  • 如何使用StarUML画类图[通俗易懂]

    此篇文档旨在介绍类图以及如何通过StarUML工具画类图。StarUML官网下载地址:http://staruml.io/download**什么是类图** 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助简化对系统的理解。**类与接口的表现形式**矩形框:它代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性…

    2022年4月15日
    777
  • 详述 Java 语言中的格式化输出

    详述 Java 语言中的格式化输出1前言相信大家在学习Java语言的时候,见到的第一条输出语句,就是:System.out.println(“HelloWorld”);毫无疑问,该语句的作用就是将HelloWorld打印到控制台,格式也非常的简单,直接按原格式输出。但是,如果将输出的内容换成“数值”或者“日期”呢?其打印的格式是否会有什么不同的变化呢?在本文中,就让咱们一起看一看在Java语言中,数值和日期是如何进行格

    2022年7月8日
    18
  • layui弹出层使用方法总结

    layui弹出层使用方法总结layui的模态窗口很强大,但是使用的时候要声明很多东西,并且对于窗口之间的参数传递也没有做具体的说明,所以基于layui弹出层的api进行了一些简单的封装,使用起来更加顺手,先上代码functionOpenDialog(id,title,url,width,height,callback,params){layui.use(‘layer’,function(){…

    2022年5月5日
    122
  • 鱼眼镜头的成像原理到畸变矫正(完整版)

    鱼眼镜头的成像原理到畸变矫正(完整版)  最近刚接触鱼眼相机,发现网上资料还是比较零散的,于是把搜罗到的资料汇总梳理了一下(我不生产知识,我只是知识的搬运工耶嘿)。摄影入门之相机镜头的分类鱼眼镜头是怎么「鱼眼」的?1.什么是鱼眼镜头1.1镜头分类 镜头类型 特征描述 变焦镜头 在一定范围内可以变换焦距、从而得到不同宽窄的视场角,不同大小的影象和不同景物范围的照相机镜头。 定焦镜头 标准镜头 视角在40°~45°之间,焦距长度与底片对角线长度基本相等。

    2025年6月17日
    0
  • c3p0连接池配置模板,SSM中使用c3p0连接池配置属性

    c3p0连接池配置模板,SSM中使用c3p0连接池配置属性文章目录SSM使用c3p0连接池配置c3p0.properties属性文件Spring核心配置文件中配置applicationContext.xml2.c3p0-config.xmlSSM使用c3p0连接池配置c3p0.properties属性文件#c3p0连接池属性文件#四大基本信息c3p0.driverClass=com.mysql.jdbc.Driverc3p0.jdbcUrl=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&am

    2022年6月11日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号