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"教程是一个实用的学习资源,它涵盖了接口设计、客户端实现以及两者之间的通信,对于学习如何在实际项目中使用接口的开发者来说非常有价值。通过深入理解这些知识点,开发者可以更...
Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,它的主要目标是提供高效、简单且轻量级的远程方法调用(RPC)机制。Hessian服务允许客户端和服务器之间通过HTTP进行双向通信,它将Java对象序列化为...
cas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单的两个客户端 democas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单的两个客户端 democas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单...
它允许开发者创建可被HTTP客户端(如浏览器、手机应用等)访问的API。 - **控制器**:Web API的核心是控制器,它继承自`ApiController`类,负责处理HTTP请求并返回响应。 - **路由配置**:定义URL模式与控制器方法...
使用VS2015编译通过 程序启动命令行 --workmode 0-5 --netmode 0 --ip 127.0.0.1 --port 6000 在程序启动时候创建一个工作模式的代理来...支持阻塞式客户端,阻塞式服务器,使用IOCTL,Select,IOCP实现了非阻塞式服务器
1. **网络通信**:客户端DEMO通常需要与服务器端进行通信,这可能涉及到HTTP/HTTPS协议、WebSocket等实时通信协议。开发者需要掌握如何实现客户端与服务端的数据传输,包括请求发送、响应接收以及错误处理。 2. **...
简单的客户端socket通信
其他功能没去做,代码有完整注释,引用海康的几个dll,另外用到了socket,在这里要谢谢 死如秋叶 大大,因为Demo是按照他的博文写的,更改的几个: 1、更改流媒体服务器原控制台改为winfrom 2、更改客户端原web+...
基于Http客户端服务器Demo,服务器是轻量级的HTTP框架,客户端有用到线程池哦,记得是跑在linux环境上的,打开压缩包,会有一个server,client文件夹,本来一个make就可以编译运行demo,但是代码是我的IP,所以亲爱的您...
首先,你需要创建一个接口,该接口定义了服务将要调用的客户端方法。这个接口通常包含一个或多个虚方法,服务端在需要与客户端通信时会调用这些方法。 2. **创建服务合同**: 创建一个常规的服务接口,其中包含...
CXF也提供了客户端API,可以生成服务代理类,使调用Web Services如同调用本地方法一样简单。 客户端的步骤通常包括: - 创建`WebServiceTemplate`实例,配置目标URL和服务端点。 - 使用`marshalSendAndReceive`或`...
在IT行业中,RESTful是一种广泛应用于Web服务设计的架构风格,它基于HTTP协议,使得客户端和服务器之间的交互变得更加简单和直观。本示例是关于如何使用C#语言创建一个简单的RESTful服务端以及对应的RESTful客户端。...
本项目“基于QT5的modbus服务器和客户端demo”提供了在QT5环境下实现Modbus通信的示例代码,对于理解和开发相关应用具有很高的参考价值。 首先,我们需要理解QT5是什么。QT5是Qt框架的一个版本,它是一个跨平台的...
服务提供者创建一个可供外部访问的Web服务,而服务消费者(即我们的Demo客户端)则负责调用这些服务。SOAP协议是两者之间进行数据交换的标准格式,它定义了消息结构、编码规则以及错误处理机制。 **SOAP协议解析** ...
在这个场景中,"cas-server"是中央认证服务(Central Authentication Service),它负责处理所有应用系统的认证请求,而"springboot客户端demo"则是一个使用Spring Boot框架构建的示例应用,该应用配置为通过CAS...
在这个demo中,"StudentMessage"可能表示一个与学生信息相关的API接口,客户端可能通过它来获取或更新学生数据。 数据库交互是安卓应用与服务器通信的另一重要环节。多数情况下,服务器会连接到关系型数据库(如...
- **HttpClient**:Apache的HTTP客户端库,功能强大,支持多种HTTP特性。 - **OkHttp**:Square公司的高性能HTTP库,易用且高效,广泛应用于Android开发。 - **Spring Framework的RestTemplate**:专为RESTful API...
在这个"C++ TCP协议的服务器与客户端demo"中,我们将深入探讨如何使用C++语言来构建一个基本的TCP服务器和客户端应用程序。 首先,TCP是一种面向连接的协议,意味着在数据交换前,服务器和客户端之间必须建立一个...