1. 程式人生 > >HttpPost Josn資料及服務端返回Json資料程式碼詳解

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確實也是一個比較好用的工具。 這裡面