HttpPost Josn資料及服務端返回Json資料程式碼詳解
最近在模擬post json資料到服務端,然後返回json資訊,當然也要實現模擬服務端的程式碼,服務單可以用controller實現,但是發現一個問題,就是返回來的是個頁面,頁面中才包含返回的json資料,怎麼取出去來了,網上部落格一般寫的都是客戶端的post,後來猛然想到以前和老師學安卓的時候的有段程式碼就是把返回的json資料放在頁面上,才發現可以用getWriter()把頁面中的json資料單獨打在頁面中
程式碼實現如下:
模擬的服務端:
模擬的傳送端:@RequestMapping(value = "/loginTest", method = RequestMethod.POST) public void test(HttpServletRequest request,HttpServletResponse response) throws Exception { //JSONObject json=JSONObject.fromObject(data); // 讀取請求內容 BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream())); String line = null; StringBuilder sb = new StringBuilder(); while((line = br.readLine())!=null){ sb.append(line); } // 將資料解碼 String reqBody = sb.toString(); JSONObject json=JSONObject.fromObject(reqBody); String data = "{'isAdmin':'true', 'usename':wsf}"; PrintWriter writer = response.getWriter(); writer.write(data); //這裡是你要返回的字串 writer.flush(); writer.close(); }
/** * @file TestPost.java * @date 2016年9月10日 * @version 3.4.1 * * Copyright (c) 2013 Sihua Tech, Inc. All Rights Reserved. */ package cn.com.dongyaTest.controller; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicHeader; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import net.sf.json.JSONObject; /** * * * @author chengjian.he * @version 3.4, 2016年9月10日 下午3:03:50 * @since Yeexun 3.4 */ public class TestPost { public static int postBody(String urlPath, String data) throws Exception { try{ // Configure and open a connection to the site you will send the request URL url = new URL(urlPath); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // 設定doOutput屬性為true表示將使用此urlConnection寫入資料 urlConnection.setDoOutput(true); // 定義待寫入資料的內容型別,我們設定為application/x-www-form-urlencoded型別 urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded"); // 得到請求的輸出流物件 OutputStreamWriter out = new OutputStreamWriter(urlConnection.getOutputStream()); // 把資料寫入請求的Body out.write(data); out.flush(); out.close(); // 從伺服器讀取響應 InputStream inputStream = urlConnection.getInputStream(); String encoding = urlConnection.getContentEncoding(); String body = IOUtils.toString(inputStream, encoding); if(urlConnection.getResponseCode()==200){ return 200; }else{ throw new Exception(body); } }catch(IOException e){ throw e; } } public static JSONObject doPost(String url,JSONObject json){ DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); JSONObject response = null; try { StringEntity s = new StringEntity(json.toString()); s.setContentEncoding("UTF-8"); s.setContentType("application/json");//傳送json資料需要設定contentType post.setEntity(s); HttpResponse res = client.execute(post); if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity entity = res.getEntity(); String result = EntityUtils.toString(res.getEntity());// 返回json格式: response = JSONObject.fromObject(result); } } catch (Exception e) { throw new RuntimeException(e); } return response; } public static void main(String[] args) { try { // String data = "{'username':'shihuan', 'password':123456}"; //TestPost.postBody("http://localhost:8009/wechatyeexun/loginTest.do", data); String url = "http://localhost:8009/wechatyeexun/loginTest.do"; JSONObject params = new JSONObject(); params.put("username", "wsf"); params.put("password", "123"); String ret = doPost(url, params).toString(); System.out.println(ret); /* final String APPLICATION_JSON = "application/json"; final String CONTENT_TYPE_TEXT_JSON = "text/json"; DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.addHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON); StringEntity se = new StringEntity(params.toString()); se.setContentType(APPLICATION_JSON); se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON)); httpPost.setEntity(se); httpClient.execute(httpPost);*/ } catch (Exception e) { e.printStackTrace(); } } }
當然,也可以用火狐的Poster直接測試更方便,下面時候返回來的json資料,希望對你有所幫助
相關推薦
HttpPost Josn資料及服務端返回Json資料程式碼詳解
最近在模擬post json資料到服務端,然後返回json資訊,當然也要實現模擬服務端的程式碼,服務單可以用controller實現,但是發現一個問題,就是返回來的是個頁面,頁面中才包含返回的json資料,怎麼取出去來了,網上部落格一般寫的都是客戶端的post,後來猛然想到
Java 通過HttpClient Post方式提交json,並從服務端返回json資料
直接上程式碼吧,和前面幾篇文章都差不多 java程式碼: package PostPager; import java.io.IOException; import java.io.InputStream; import java.io.Output
Java 通過HttpURLConnection Post方式提交json,並從服務端返回json資料
這個技術和xml差不過,主要是服務端程式碼稍微修改,客戶端程式碼修改部分傳遞引數就可以完成,但在之前需要匯入json所需要的jar包。 PostJson.java程式碼 package PostPager; import java.io.InputSt
服務端返回json資料,前端通過判斷json資料值做跳轉頁面
<scriptsrc="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <script>$(document).ready(functio
解決PHP服務端返回json字符串有特殊字符的問題
解析 clas 要求 com 切換 trac bom break 必須 1. 問題描述 在調用PHP後臺接口發現後臺接口返回的json字符串Gson一直解析不通過: List<Region> districts = null; if (!Text
servlet向客戶端返回JSON資料
我們可以使用servlet的內建物件response向客戶端傳送響應。首先我們來看一下官方文件對response的解釋: 定義一個物件來幫助servlet向客戶端傳送響應。servlet容器建立一個ServletResponse物件,並將其作為引數傳遞給ser
list集合轉換成json資料,ajax請求返回json資料,再通過迴圈顯示出來
之前在網上查了很多關於迴圈顯示ajax返回值的方法,很多都不對的,顯示不了我要的結果。後來自己鼓搗出來了,發出來分享一下自己的成果。因為ajax不能返回集合的,需要把集合list轉換成json返回,再用迴圈的方式,顯示出結果。 操作層 //編碼方式request.set
web後端mysql查詢java程式碼詳解
核心程式碼如下所示: Class.forName("com.mysql.jdbc.Driver"); &
資料結構-線性表-連結串列的程式碼詳解
繼上篇文章對順序表的介紹,這篇文章介紹連結串列,作為資料結構中最重要的一大模組,連結串列也是以後常用的 單鏈表是其中的核心,理解了單鏈表,其實連結串列的知識你也就掌握了。 程式碼附在最後!!!! 思路在程式註釋。詳解 一。 1.程式碼部分 一包 三類
Android訪問網路系列之--服務端返回XML或JSON格式資料,Android 進行解析並顯示
例子說明:使用者通過訪問web資源的最新電影資訊,伺服器端生成XML或JSON格式資料,返回Android客戶端進行顯示。 此案例開發需要兩個方面 WEB開發和android開發. 一.web開發相對比較簡單,只是模擬一下 相關程式碼如下: 1.實體Bean package ygc.yxb.domain
Android訪問網路:服務端返回XML或JSON格式資料,Android 進行解析並使用ListView顯示
剛剛入門學習了Android的ListView,也是看了傳智播客黎活明老師的視訊學習了,但是一直執行不了,還報錯了。報的錯誤是:at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.jav
jquery easyui tree動態載入-服務端struts返回json資料
第一種方法: js: <script type="text/javascript"> $(function() { $(document).ready(function() {
vue-cli專案如何使用vue-resource獲取本地的json資料(模擬服務端返回資料)
最近使用vue-cli做了一個小小的專案,在專案中需要使用vue-resource來與後臺進行資料互動,所以我使用了本地json資料來模仿後臺獲取資料的流程。至於vue-resource的安裝和json的準備我就不贅述了、、、 下面是操作方法: 1、首先介紹
服務端返回的json數據,導致前端報錯的原因及解決方法
asc itl 概述 div ++ java 需要 nbsp end 前言 最近在開發的過程中遇到了一個問題:後端傳過來的json字符串不是標準的json字符串 導致報錯的原因 後端傳過來的json字符串中包含一些不標準的字符或錯誤的引號嵌套 1)\n 2) \
後臺服務返回Json資料出現$ref的問題解決方案
問題出現:使用FastJson的JSONArray型別作為返回資料,當像JSONArray物件中新增JSONObject物件,而JSONObject物件中包含相同的節點資料時,FastJson會防止返回資料棧溢位的問題,自動將JSONArray中相同的節點資料使用引用方式代替,即:{"$ref"
Php如何返回json資料,前後端分離的基本解決方案
php返回json,xml,JSONP等格式的資料 返回json資料: header('Content-Type:application/json; charset=utf-8'); $arr = array('a'=>1,'b'=>2); exit(json_enco
返回JSON資料到客戶端
public List getLatestNews(){ List list=new ArrayList(); list.add(new News(1, "納妾記", 45)); list.add(new News(2, "花千骨", 40)); list.add(new News(3, "捉妖記", 12
Jsp頁面傳Json資料到服務端,轉物件或集合進行資料處理
需求:1、將頁面資料帶到服務端並轉成物件,2、將頁面的集合資料帶到服務端轉List 實現:用ajax請求傳遞資料,資料格式為json JS方法: testJsonMethod = function(
客戶端POST傳送json資料給服務端,客戶端端接收伺服器端json資料響應
public static void jsonRequest() throws IOException, URISyntaxException { //請求的地址 String url = "http://localhost:8080/springmvc/response/r
Java 通過httpClient Post方式提交xml,並從服務端返回資料
在通過http請求連線服務端程式時,有兩種方式httpClient這個不是標準的java庫,但是是開源專案,能夠快捷的開發,但如果做Android的開發,推薦使用httpUrlConnect這個工具。但是httpClient確實也是一個比較好用的工具。 這裡面