`

简单HTTP接口服务客户端DEMO(CQYHT)

 
阅读更多

 

Demo程序:

 

package org.acooly.onlycall.service;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.io.IOUtils;

public class ServiceClientDemo {

	private static final String DEFAULT_ENCODING = "UTF-8";
	private static final String SERVICE_ENDPOINT = "http://域名/service";

	public static void main(String[] args) throws Exception {
		ServiceClientDemo demo = new ServiceClientDemo();
		demo.testCqyhtService();
	}

	public void testCqyhtService() {

		Map<String, String> parameters = new HashMap<String, String>();
		parameters.put("Action", "CALL");
		parameters.put("PhoneNo", "一号通号码");
		parameters.put("Credential", "XXXXXX");
		parameters.put("CallerNo", "主叫");
		parameters.put("CalledNos", "被叫");

		String queryString = getCanonicalizedQueryString(parameters, false);
		String requestUrl = SERVICE_ENDPOINT + "?" + queryString;
		System.out.println("Request: \n" + requestUrl);
		String response = httpSimpleRequest("GET", requestUrl, null);
		System.out.println("Response Body: \n" + response);

	}

	protected String httpSimpleRequest(String method, String requestUrl, Map<String, String> headers) {
		HttpURLConnection conn = null;
		InputStream in = null;
		String result = null;
		try {
			URL url = new URL(requestUrl);
			conn = (HttpURLConnection) url.openConnection();
			conn.setRequestMethod(method);
			conn.setDoInput(true);
			conn.setDoOutput(true);
			if (headers != null) {
				for (Map.Entry<String, String> entry : headers.entrySet()) {
					conn.addRequestProperty(entry.getKey(), URLEncoder.encode(entry.getValue(), "UTF-8"));
				}
			}
			int status = conn.getResponseCode();
			System.out.println("Response status: " + status);
			in = conn.getErrorStream();
			if (in != null) {
				result = IOUtils.toString(in);
			}
			in = conn.getInputStream();
			if (in != null) {
				result = IOUtils.toString(in);
			}
		} catch (Exception e) {
			System.err.println(e.getMessage());
		} finally {
			IOUtils.closeQuietly(in);
		}
		return result;
	}

	protected String getCanonicalizedQueryString(Map<String, String> parameters, boolean encoding) {
		StringBuilder builder = new StringBuilder();
		Iterator<Map.Entry<String, String>> pairs = parameters.entrySet().iterator();
		while (pairs.hasNext()) {
			Map.Entry<String, String> pair = pairs.next();
			String key = pair.getKey();
			String value = pair.getValue();
			builder.append(encoding ? urlEncode(key, false) : key);
			builder.append("=");
			builder.append(encoding ? urlEncode(value, false) : value);
			if (pairs.hasNext()) {
				builder.append("&");
			}
		}
		return builder.toString();
	}

	protected String urlEncode(String value, boolean path) {
		try {
			String encoded = URLEncoder.encode(value, DEFAULT_ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~");
			if (path) {
				encoded = encoded.replace("%2F", "/");
			}

			return encoded;
		} catch (UnsupportedEncodingException ex) {
			throw new RuntimeException(ex);
		}
	}
}

 

 

运行结果:

 

 

Request: 
http://域名/service?Action=CALL&CalledNos=被叫&Credential=XXXXXX&CallerNo=主叫&PhoneNo=一号通号码
Response status: 200
Response Body: 
<?xml version="1.0" encoding="UTF-8"?>
<Result>
	<Code>0001</Code>
	<Message>一号通号码不合法或用户被禁用</Message>
</Result>
 

 

 

 

 

 

分享到:
评论

相关推荐

    接口实现客户端demo

    总的来说,这个"接口实现客户端demo"教程是一个实用的学习资源,它涵盖了接口设计、客户端实现以及两者之间的通信,对于学习如何在实际项目中使用接口的开发者来说非常有价值。通过深入理解这些知识点,开发者可以更...

    hessian 服务器 客户端 demo

    Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,它的主要目标是提供高效、简单且轻量级的远程方法调用(RPC)机制。Hessian服务允许客户端和服务器之间通过HTTP进行双向通信,它将Java对象序列化为...

    cas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单的两个客户端 demo

    cas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单的两个客户端 democas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单的两个客户端 democas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单...

    c# http接口设计及调用demo

    它允许开发者创建可被HTTP客户端(如浏览器、手机应用等)访问的API。 - **控制器**:Web API的核心是控制器,它继承自`ApiController`类,负责处理HTTP请求并返回响应。 - **路由配置**:定义URL模式与控制器方法...

    tcp服务器客户端demo

    使用VS2015编译通过 程序启动命令行 --workmode 0-5 --netmode 0 --ip 127.0.0.1 --port 6000 在程序启动时候创建一个工作模式的代理来...支持阻塞式客户端,阻塞式服务器,使用IOCTL,Select,IOCP实现了非阻塞式服务器

    客户端DEMO

    1. **网络通信**:客户端DEMO通常需要与服务器端进行通信,这可能涉及到HTTP/HTTPS协议、WebSocket等实时通信协议。开发者需要掌握如何实现客户端与服务端的数据传输,包括请求发送、响应接收以及错误处理。 2. **...

    服务器客户端通信 客户端demo

    简单的客户端socket通信

    C#海康流媒体服务器+客户端Demo

    其他功能没去做,代码有完整注释,引用海康的几个dll,另外用到了socket,在这里要谢谢 死如秋叶 大大,因为Demo是按照他的博文写的,更改的几个: 1、更改流媒体服务器原控制台改为winfrom 2、更改客户端原web+...

    基于Http客户端服务器Demo,服务器是轻量级的HTTP框架,客户端有用到线程池哦

    基于Http客户端服务器Demo,服务器是轻量级的HTTP框架,客户端有用到线程池哦,记得是跑在linux环境上的,打开压缩包,会有一个server,client文件夹,本来一个make就可以编译运行demo,但是代码是我的IP,所以亲爱的您...

    c# wcf双工通信客户端demo

    首先,你需要创建一个接口,该接口定义了服务将要调用的客户端方法。这个接口通常包含一个或多个虚方法,服务端在需要与客户端通信时会调用这些方法。 2. **创建服务合同**: 创建一个常规的服务接口,其中包含...

    WebServices服务端和客户端DEMO

    CXF也提供了客户端API,可以生成服务代理类,使调用Web Services如同调用本地方法一样简单。 客户端的步骤通常包括: - 创建`WebServiceTemplate`实例,配置目标URL和服务端点。 - 使用`marshalSendAndReceive`或`...

    C# 一个简单的 Restful 服务端和 Restful 客户端 Demo

    在IT行业中,RESTful是一种广泛应用于Web服务设计的架构风格,它基于HTTP协议,使得客户端和服务器之间的交互变得更加简单和直观。本示例是关于如何使用C#语言创建一个简单的RESTful服务端以及对应的RESTful客户端。...

    基于QT5的modbus服务器和客户端demo

    本项目“基于QT5的modbus服务器和客户端demo”提供了在QT5环境下实现Modbus通信的示例代码,对于理解和开发相关应用具有很高的参考价值。 首先,我们需要理解QT5是什么。QT5是Qt框架的一个版本,它是一个跨平台的...

    WebService客户端Demo

    服务提供者创建一个可供外部访问的Web服务,而服务消费者(即我们的Demo客户端)则负责调用这些服务。SOAP协议是两者之间进行数据交换的标准格式,它定义了消息结构、编码规则以及错误处理机制。 **SOAP协议解析** ...

    单点登录cas服务器demo及springboot客户端demo

    在这个场景中,"cas-server"是中央认证服务(Central Authentication Service),它负责处理所有应用系统的认证请求,而"springboot客户端demo"则是一个使用Spring Boot框架构建的示例应用,该应用配置为通过CAS...

    安卓服务器与客户端demo

    在这个demo中,"StudentMessage"可能表示一个与学生信息相关的API接口,客户端可能通过它来获取或更新学生数据。 数据库交互是安卓应用与服务器通信的另一重要环节。多数情况下,服务器会连接到关系型数据库(如...

    HTTP接口间调用Demo

    - **HttpClient**:Apache的HTTP客户端库,功能强大,支持多种HTTP特性。 - **OkHttp**:Square公司的高性能HTTP库,易用且高效,广泛应用于Android开发。 - **Spring Framework的RestTemplate**:专为RESTful API...

    C++TCP协议的服务器与客户端demo

    在这个"C++ TCP协议的服务器与客户端demo"中,我们将深入探讨如何使用C++语言来构建一个基本的TCP服务器和客户端应用程序。 首先,TCP是一种面向连接的协议,意味着在数据交换前,服务器和客户端之间必须建立一个...

Global site tag (gtag.js) - Google Analytics