您的位置:

c++postjson的简单介绍

c++postjson的简单介绍

更新:

本文目录一览:

如何用c实现http post json

http是基于Socket通信的一种通信规约,post是http规约的一种功能,json是常用于字符串解释型编程语言及一些脚本上用的对象格式。

用c#发送一个post类型的json包

HttpWebRequest req = WebRequest.CreateHttp(url);

var buffer = Encoding.UTF8.GetBytes(formData);

req.Method = "POST";

req.ContentType = "application/json";

req.ContentLength = buffer.Length;

using (var fs = req.GetRequestStream())

{

    fs.Write(buffer, 0, buffer.Length);

    fs.Flush();

}

WebResponse resp = null;

try

{

    resp = req.GetResponse();

}

catch (WebException ex)

{

    resp = ex.Response;

    if (resp != null)

    {

        resp.Close();

    }

    throw;

}

var ns = resp.GetResponseStream();

Stream stream = ns;

if (e == null)

{

    if (resp.SupportsHeaders)

    {

        var m = s_charsetRegex.Match(resp.ContentType);

        if (m.Success)

        {

            e = Encoding.GetEncoding(m.Groups[1].Value);

        }

        var contentEncoding = resp.Headers.Get("Content-Encoding");

        if (contentEncoding == "gzip")

        {

            stream = new GZipStream(ns, CompressionMode.Decompress);

        }

        else if (contentEncoding == "deflate")

        {

            stream = new DeflateStream(ns, CompressionMode.Decompress);

        }

    }

    if (e == null)

    {

        e = Encoding.UTF8;

    }

}

var reader = new StreamReader(stream, e);

System.Console.WriteLine(reader.ReadToEnd());需要引用System.Net

Post请求json对象转义问题

/**

 * 扁平化json格式

 * {a:{b:{c:1}}} -- {a.b.c=1}

 * @param o

 * @param prekey

 * @param resobj

 */

function plat(o, prekey, resobj)  {

    const comType = ['object', 'array'];

    prekey = prekey ? prekey + '.' : '';

    const keys = Object.keys(o);

    keys.forEach((item) = {

        const value = o[item];

        const type = typeof value;

        if (value  comType.indexOf(type) !== -1) {

            JsonUtil.plat(value, prekey + item, resobj);

        } else {

            resobj[prekey + item] = value;

        }

    })

};

var recordJson = {};

plat(values, '', recordJson);

求一个c#的 post请求 json 并且接收返回json数据的一个demo。

public string HttpPost(string url,string data)

{

HttpWebRequest request=(HttpWebRequest)WebRequest.Create(url);

request.ContentType="application/json";

request.Method="POST";

byte[] buffer=Encoding.UTF8.GetBytes(data);

using(Stream stream=request.GetRequestStream())

{

stream.Write(buffer,0,buffer.Length);

}

HttpWebResponse response=(HttpWebResponse)request.GetResponse();

string result=string.Empty;

using(StreamReader reader=new StreamReader(response.GetResponseStream()))

{

result=reader.ReadToEnd();

}

return result;

}

如何从post json数据到网站

1. JSON的数据格式

a) 按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:

{ "firstName": "Brett" }

b) 可以创建包含多个名称/值对的记录,比如:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

c) 可以创建值的数组

{ "people": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }

]}

d) 当然,可以使用相同的语法表示多个值(每个值包含多个记录):

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }

],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }

]

}

注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

2. 在 JavaScript 中使用 JSON

JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

2.1 将 JSON 数据赋值给变量

例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

var people =

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }

],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }

]

}

2.2 访问数据

将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在JavaScript 中使用下面这样的代码:

people.programmers[0].lastName;

注意,数组索引是从零开始的。

2.3 修改 JSON 数据

正如访问数据,可以按照同样的方式修改数据:

people.musicians[1].lastName = "Rachmaninov";

2.4 转换回字符串

a) 在 JavaScript 中这种转换也很简单:

String newJSONtext = people.toJSONString();

b) 可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令:

String myObjectInJSON = myObject.toJSONString();

说明:将转换回的字符串作为Ajax调用的字符串,完成异步传输。

小结:如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。

3. 服务器端的 JSON

3.1 将 JSON 发给服务器

a) 通过 GET 以名称/值对发送 JSON

在 JSON 数据中会有空格和各种字符,Web 浏览器往往要尝试对其继续编译。要确保这些字符不会在服务器上(或者在将数据发送给服务器的过程中)引起混乱,需要在JavaScript的escape()函数中做如下添加:

var url = "organizePeople.php?people=" + escape(people.toJSONString());

request.open("GET", url, true);

request.onreadystatechange = updatePage;

request.send(null);

b) 利用 POST 请求发送 JSON 数据

当决定使用 POST 请求将 JSON 数据发送给服务器时,并不需要对代码进行大量更改,如下所示:

var url = "organizePeople.php?timeStamp=" + new Date().getTime();

request.open("POST", url, true);

request.onreadystatechange = updatePage;

request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

request.send(people.toJSONString());

注意:赋值时格式必须是var msg=eval('(' + req.responseText + ')');

3.2 在服务器上解释 JSON

a) 处理 JSON 的两步骤。

针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。

使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。

b) 寻找 JSON 解析器

寻找 JSON 解析器或工具箱最好的资源是 JSON 站点。如果使用的是 Java servlet,json.org 上的 org.json 包就是个不错的选择。在这种情况下,可以从 JSON Web 站点下载 json.zip 并将其中包含的源文件添加到项目构建目录。编译完这些文件后,一切就就绪了。对于所支持的其他语言,同样可以使用相同的步骤;使用何种语言取决于您对该语言的精通程度,最好使用您所熟悉的语言。

c) 使用 JSON 解析器

一旦获得了程序可用的资源,剩下的事就是找到合适的方法进行调用。如果在 servlet 中使用的是 org.json 包,则会使用如下代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

StringBuffer jb = new StringBuffer();

String line = null;

try {

BufferedReader reader = request.getReader();

while ((line = reader.readLine()) != null)

jb.append(line);

} catch (Exception e) { //report an error }

try {

JSONObject jsonObject = new JSONObject(jb.toString());

} catch (ParseException e) {

// crash and burn

throw new IOException("Error parsing JSON request string");

}

// Work with the data using methods like...

// int someInt = jsonObject.getInt("intParamName");

// String someString = jsonObject.getString("stringParamName");

// JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName");

// JSONArray arr = jsonObject.getJSONArray("arrayParamName");

// etc...

}

c++postjson的简单介绍

本文目录一览: 1、如何用c实现http post json 2、用c#发送一个post类型的json包 3、Post请求json对象转义问题 4、求一个c#的 post请求 json 并且接收返回j

2023-12-08
C#PostJson详解

2023-05-19
javascript入门笔记1的简单介绍

2022-11-18
c到c语言笔记的简单介绍

2022-11-24
python使用笔记23的简单介绍

2022-11-10
javascript简要笔记,JavaScript读书笔记

2022-11-17
PostJSON全面解析

2023-05-17
java客户端学习笔记(java开发笔记)

2022-11-14
印象笔记记录java学习(Java成长笔记)

2022-11-12
重拾python笔记三的简单介绍

2022-11-13
java包笔记,Java语言包

2022-11-18
python使用笔记006的简单介绍

2022-11-15
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
重学java笔记,java笔记总结

2022-11-23
发篇java复习笔记(java课程笔记)

2022-11-09
java基础知识学习笔记一,Java基础笔记

2022-11-21
java方向综合笔试题的简单介绍

2022-11-23
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
python学习之笔记(python的笔记)

2022-11-10
java学习笔记(java初学笔记)

2022-11-14