测试JSON RPC远程调用(JSON客户端)

#include <string>
#include <iostream>

#include <curl/curl.h>

/*
标题:JSon客户端
Author: Kagula
LastUpdateDate:2014-05-17
描述:测试JSON RPC远程调用
测试环境:Windows 8.1、Visual Studio 2013 SP1
         curl-7.36.0
		 CPPCMS 1.0.4(JSON服务端)
		 Java Servlet (JSON服务端)
*/

static std::string *DownloadedResponse;
static int writer(char *data, size_t size, size_t nmemb, std::string *buffer_in)
{

	// Is there anything in the buffer?
	if (buffer_in != NULL)
	{
		// Append the data to the buffer
		buffer_in->append(data, size * nmemb);

		// How much did we write?
		DownloadedResponse = buffer_in;

		return size * nmemb;
	}

	return 0;

}

std::string GetJsonByPostMethod(std::string URL,std::string jsonObj)
{
	CURL *curl;
	CURLcode res;
	curl = curl_easy_init();

	if (curl)
	{
#ifndef _DEBUG
		curl_easy_setopt(curl, CURLOPT_TIMEOUT, 1);//Release模式下规定超时为一秒
#endif
		curl_easy_setopt(curl, CURLOPT_URL, URL.c_str());
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonObj.c_str());
		curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, jsonObj.length());
		//curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
		curl_slist *plist = curl_slist_append(NULL,
			"Content-Type:application/json;charset=UTF-8");
		curl_easy_setopt(curl, CURLOPT_HTTPHEADER, plist);
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
		res = curl_easy_perform(curl);

		if (CURLE_OK == res)
		{
			char *ct;
			res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
			if ((CURLE_OK == res) && ct)
				return *DownloadedResponse;
		}
	}
}

int main(int argc, char *argv[])
{
	std::string url = "localhost:8080/WageQuery/JsonServer";//"http://localhost:8080/calc";
	std::string jsonObj = "{\"method\":\"div\",\"params\":[12,4],\"id\":1}";//"{\"method\": \"hello\",\"name\" : \"lijun\"}";

	std::string  strR = GetJsonByPostMethod(url, jsonObj);

	std::cout << strR << std::endl;

	return 0;
}

时间: 2024-10-26 02:18:27

测试JSON RPC远程调用(JSON客户端)的相关文章

測试JSON RPC远程调用(JSONclient)

#include <string> #include <iostream> #include <curl/curl.h> /* 标题:JSonclient Author: Kagula LastUpdateDate:2014-05-17 描写叙述:測试JSON RPC远程调用 測试环境:Windows 8.1.Visual Studio 2013 SP1 curl-7.36.0 CPPCMS 1.0.4(JSON服务端) Java Servlet (JSON服务端) *

徒手撸框架--实现 RPC 远程调用

微服务,已经是每个互联网开发者必须掌握的一项技术.而 RPC 框架,是构成微服务最重要的组成部分之一.趁最近有时间.又看了看 dubbo 的源码.dubbo 为了做到灵活和解耦,使用了大量的设计模式和 SPI机制,要看懂 dubbo 的代码也不太容易. 按照<徒手撸框架>系列文章的套路,我还是会极简的实现一个 RPC 框架.帮助大家理解 RPC 框架的原理. 广义的来讲一个完整的 RPC 包含了很多组件,包括服务发现,服务治理,远程调用,调用链分析,网关等等.我将会慢慢的实现这些功能,这篇文章

go语言net包rpc远程调用的使用

一.基于http的RPC 服务端: package main; import ( "net/rpc" "net/http" "log" ) //go对RPC的支持,支持三个级别:TCP.HTTP.JSONRPC //go的RPC只支持GO开发的服务器与客户端之间的交互,因为采用了gob编码 //注意字段必须是导出 type Params struct { Width, Height int; } type Rect struct{} //函数必须

dubbo集成zookeeper rpc远程调用

注:下面使用dubbo依赖的是zookeeper注册中心,这里没有详细的介绍.在配置之前,请自行准备好zookeeper环境. 后续如果写zookeeper的配置会补放链接 添加Gradle依赖 compile group: 'com.alibaba', name: 'dubbo', version: '2.5.10'//dubbo compile group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.3.3'//zookee

rpc远程调用开发

RPC即远程过程调用,适用于集群管理,集群节点就是RPCServer,而我们发起远程调用的web服务器就是RPCClient.所以是少数rpcClient(可能一个)对多个RPCServer(集群节点). 今天讲述的RPC开发希望实现这样一个效果,在RPCClient上(也就是web服务器)执行一条shell命令,要求指定的远程主机执行指定的命令.命令的格式如下 rpc_client address command 比如 ./ssan_client 192.168.1.1 vmstat 希望这条

基于http协议实现RPC远程调用

今天简单说一下基本Http协议来实现RPC框架~ 基于Http协议实现RPC框架: 优点: 1.简单.实用.开发方便 缺点: 1.性能不是很稳定,在海量数据时,完全顶不住,容易宕机 2.因为不是走的注册中心,不便于维护.监控以及统计分析 但是对于大多数公司而言,不会又像淘宝.京东那样大的数据量,所以基于Http协议的RPC,实现多个系统间的解耦,还是很实用的~ 下面,我们进入正题,通过Java实现简单的RPC调用 一.maven 引入第三方jar包(不是maven项目,可以自己去网上下载一个对应

手动实现RPC远程调用

java中的RPC核心思想就是:socket编程.传输Object.动态代理 package com.lala.rpc; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java

[转]Linux下C语言-RPC远程调用编程rpcgen用法

在查看libc6-dev软件包提供的工具(用 dpkg -L libc6-dev 命令)的时候,发现此软件包提供了一个有用的工具rpcgen命令.通过rpcgen的man手册看到此工具的作用是把RPC源程序编译成C语言源程序,从而轻松实现远程过程调用.下面的例子程序的作用是客户端程序取中心服务器上时间的,编程过程如下:先编写一个 “ RPC 语言 ” ( RPC Language ( Remote Procedure Call Language ) ) 的源文件 test.x ,文件后缀名为 x

RPC远程调用概念 &amp;&amp; demo实例

RPC是指远程过程调用,直观说法就是A通过网络调用B的过程方法.也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据. 为什么RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如比如不同的系统间的通讯,甚至不同的组织间的通讯.由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用 首先要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的