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);
}
});
}
