post上传json数据
Ⅰ 当我们向服务器post数据时,表单 or JSON
Web前端开发中,以post方式向服务器发送请求的操作再平常不过。发送post请求时,若需要传递数据,数据是包含在消息主体中的。
传递数据的方式有两种:表单和json。使用表单时,数据类型是普通的文本数据,或文件(大型二进制数据或者包含非ASCII字符的数据)。而json是指序列化后的 JSON 字符串。
对于表单方式,消息主体的编码方式有三种:
x-www-form-urlencoded 这种方式只能传输普通文本数据,后来为了提供文件上传的功能,提出了 form-data 方式,可以实现文本数据和文件混合传输,所谓 multipart 。
对于json而言,消息主体的编码方式是: application/json
消息主体的编码方式通过 Content-Type 字段标明。有时候前端传递具体的 Content-Type 可能会导致请求失败,因为有可能后端设计接口的时候,预先设定了传递的数据类型,它也会使用对应的解码方式。如果前端对此不知情,使用了错误的编码格式,反而会导致请求失败。这个时候去掉 Content-Type 设置,问题可能就解决了。
参考资料:
Ⅱ iOS 怎么用post方式上传json数据
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONStringer;
import android.util.Log;
public class JSON{
//========================================================================
/**
*
retrieveJSONArray(ArrayList<> jsonArray)
*
*
- Returns JSON formed Array from the ArrayList provided.
- jsonArray will be ArrayList of array.
- the elements provided in array will be arranged in consecutive keys
- ex: [{"key0","1st element of array"},{"key1","2nd element of array"}]
*
*
*
*
*/
//========================================================================
public static String retrieveJSONArray(ArrayList jsonArray){
try{
String[] jsonObject=new String[2];
JSONStringer stringer=new JSONStringer();
stringer.array();
int arrayLength=jsonArray.size();
for(int i=0;i<arrayLength;i++){
jsonObject=jsonArray.get(i);
stringer.object();
for(int j=0;j<jsonObject.length;j++)
stringer.key("key"+j).value(jsonObject[j]);
stringer.endObject();
}
stringer.endArray();
return stringer.toString();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
//========================================================================
/**
*
retrieveJSONArray(ArrayList<> jsonArray,String[] key)
*
*
- Returns JSON formed Array from the ArrayList provided.
- jsonArray will be ArrayList of array.
- the elements provided in array will be arranged in consecutive keys
- ex: [{"key[0]","1st element of array"},{"key[1]","2nd element of array"}]
*
*
*
*
*/
//========================================================================
public static String retrieveJSONArray(ArrayList jsonArray,String[] key){
try{
String[] jsonObject=new String[2];
JSONStringer stringer=new JSONStringer();
stringer.array();
int arrayLength=jsonArray.size();
for(int i=0;i<arrayLength;i++){
jsonObject=jsonArray.get(i);
stringer.object();
for(int j=0;j<jsonObject.length;j++)
stringer.key(key[j]).value(jsonObject[j]);
stringer.endObject();
}
stringer.endArray();
return stringer.toString();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
//========================================================================
/**
*
retrieveJSONString(ArrayList<> jsonArray)
*
*
- Returns JSON formed string from the ArrayList provided.
- jsonArray will be ArrayList of array.
- ex: {"key0":"1st element of array","key1":"2nd element of array"}
*
*
*
*/
//========================================================================
public static String retrieveJSONString(ArrayList jsonObject){
try{
String[] arr_jsonObject=new String[2];
JSONStringer stringer=new JSONStringer();
stringer.object();
for(int i=0;i<jsonObject.size();i++){
arr_jsonObject=jsonObject.get(i);
stringer.key(arr_jsonObject[0]).value(arr_jsonObject[1]);
}
stringer.endObject();
return stringer.toString();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
//========================================================================
/**
*
Converts jsonArray to an arrayList of String[]. Where each row contains values in json
* String array, in increasing order of key values provided, without there key counterparts.
*
* For ex: if JSON string is [{"key00":"value00","key01":"value01"},{"key10":"value10","key11":"value11"}],
* then the rows of an array will be as follows
*
- First row : 1st element- value00, 2nd element - value01
- Second row : 1st element- value10, 2nd element - value11
*
*
*
* */
//========================================================================
public static ArrayList convertJSONArraytoArrayList(String jsonArray,String[] key){
try{
JSONArray JsonArray=new JSONArray(jsonArray);
JSONObject JsonObject=new JSONObject();
int jsonArraySize=JsonArray.length();
String[] jsonObjectArray;
ArrayList jsonArrayList=new ArrayList();
for(int i=0;i<jsonArraySize;i++){
JsonObject=JsonArray.getJSONObject(i);
jsonObjectArray=new String[key.length];
for(int j=0;j<key.length;j++)
jsonObjectArray[j]=JsonObject.getString(key[j]);
jsonArrayList.add(jsonObjectArray);
}
return jsonArrayList;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
//========================================================================
/**
*
Converts jsonString to an arrayList of String[].
*
* For ex: if JSON string is {"key00":"value00","key01":"value01"},
* then the rows of an array will be as follows
*
- First row : 1st element- value00
- Second row : 1st element- value10
*
*
*
* */
//========================================================================
public static ArrayList convertJSONStringtoArrayList(String jsonString,String[] key){
try{
JSONObject jsonObject=new JSONObject(jsonString);
ArrayList jsonArrayList=new ArrayList();
for(int i=0;i<key.length;i++)
jsonArrayList.add(new String[]{jsonObject.getString(key[i])});
return jsonArrayList;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
}
x
Ⅲ 如何使用JSON格式 POST数据到服务器
1. JSON的数据格式a) 按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:{ "firstName": "Brett" }b) 可以创建包含多个名称/值对的记录,比如:{ "firstName": "Brett", "lastName":"McLaughlin", "email": "[email protected]" }c) 可以创建值的数组{ "people": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "[email protected]" }, { "firstName": "Jason", "lastName":"Hunter", "email": "[email protected]" }]}d) 当然,可以使用相同的语法表示多个值(每个值包含多个记录):{ "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "[email protected]" }, { "firstName": "Jason", "lastName":"Hunter", "email": "[email protected]" } ],"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 中使用 JSONJSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。
2.1 将 JSON 数据赋值给变量例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "[email protected]" }, { "firstName": "Jason", "lastName":"Hunter", "email": "[email protected]" } ], "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. 服务器端的 JSON3.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 在服务器上解释 JSONa) 处理 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...}
Ⅳ iosafn怎么用post上传json数据
代码如下:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//申明返回的结果是json类型
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//申明请求的数据是json类型
manager.requestSerializer=[AFJSONRequestSerializer serializer];
//如果报接受类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
//传入的参数
NSDictionary *parameters = @{@"1":@"XXXX",@"2":@"XXXX",@"3":@"XXXXX"};
//你的接口地址
NSString *url=@"http://";
//发送请求
[manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
Ⅳ post请求怎么把json参数传递
http post请求的json类型参数获取 方法:request.getParameter("json的key")这样就可以
Ⅵ 如何在.net中模拟post方式提交json数据
示例:这个post有三个参数,第一个是url(可以带参数,但只能是普通字符串),第二个是参数(可以是json字符串),第三个是回调函数
$.post("http://192.168.xx.xx:7000/General/GetUsers?projectID="+top.projectID,html, function (result) { mynextNodeTreeCallBack(result, "1"); });
Ⅶ post发送JSON数据(字符串、数组、字典、自定义对象)给服务器
post发送JSON数据(字符串、数组、字典、自定义对象)给服务器
触发发送的方法
这次Demo是通过点击屏幕触发发送数据给服务器事件
前提需要开启本地模拟服务器
发送JSON字符串
发送字典给服务器
发送数组给服务器
发送oc对象给服务器
先讲对象转换为字典
通过系统提供的JSON解析类进行序列化
觉得不错请点赞支持,欢迎留言或进我的个人群855801563领取【架构资料专题目合集90期】、【BATJTMD大厂JAVA面试真题1000+】,本群专用于学习交流技术、分享面试机会,拒绝广告,我也会在群内不定期答题、探讨
Ⅷ 如何在.net中模拟post方式提交json数据
using System;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Net.Cache;
using System.Text;
public class Spider
{
public static string GetHtmlByJson(string url, string json = "")
{
var result = string.Empty;
try
{
var request = WebRequest.Create(url) as HttpWebRequest;
request.ContentType = "text/json";
request.Method = "post";
//request.CookieContainer = _cookie;
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
}
}
catch (UriFormatException uex)
{
// 出错处理
}
catch (WebException ex)
{
// 出错处理
}
return result;
}
}
Ⅸ PHP如何通过Post请求发送Json数据
首先要把数据转换成json格式,再通过curl方法调用接口并传参数
代码如下:
$keyword=urlencode($_POST['keyword']);
$parameters=json_encode(array('keyWord'=>$keyword,'areaCode'=>'*'));
$post_data['appToken']="323ds7674354fds32fdsda60173";//随便写的
$post_data['parameters']=$parameters;
$url='http://serde.com/compadddvd/index';//随便写的
$ch=curl_init();
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);//用post方法传送参数
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$response=curl_exec($ch);
curl_close($ch);
之后就返回数据即可。
Ⅹ 如何在.net中模拟post方式提交json数据
function postSimpleData() {
$.ajax({
type: "POST",
url: "Service/SimpleData",
contentType: "application/json", //必须有
dataType: "json", //表示返回值类型,不必须
data: JSON.stringify({ 'foo': 'foovalue', 'bar': 'barvalue' }), //相当于 //data: "{'str1':'foovalue', 'str2':'barvalue'}",
success: function (jsonResult) {
alert(jsonResult);
}
});
}
