① java 訪問一個介面得到介面返回jsON,步驟是怎麼做的
寫個servlet,將結果轉換成ArrayJson對象,列印出這個json就行,前端通過ajax去請求獲得json數據。java轉json需要用到相應的jar包,網路一下吧。
java中的介面是一種特殊的類,使用關鍵字interface創建。介面功能完全實現後,可以打成jar包,提供給其他公司使用。
要返回json格式數據,可以把介面中抽象方法的返回值類型規定為JSONObject或JSONString類型。這樣當其他公司調用時,得到的數據就是json數據了。
另外,以jar形式提供的介面,可以通過反編譯得到你的源碼,如果你不希望開源,就要加密了。
訪問介面時code返回2怎麼回事
一般情況介面有調用說明的睜寬,需要看介面提供方提供的說明。
AFHTTPRequestOperationManager 進行post調用,
manager.requestSerializer = [AFJSONRequestSerializer serializer];請求
manager.responseSerializer = [AFJSONResponseSerializer serializer];響應
入參出參都會序列化;後面發現介面返回的參數結構不固定,可能是map,array,string
我印象中如果不重寫pareTo方法那返回值都是-1吧......
我一般都是實現Comparable介面,重寫CompareTo方法就可以了。
至於降序升序,可以這樣比較:
假如A的值大於B,你返回1。這樣調用Collections.sort()方法就是升序
假如A的值大於B,你返回-1。這樣調用Collections.sort()方法臘襲就是降序
一般比較的都是對象中一個具體的數值。不知道你的類的構造,不好給例子
struts2中用rest後台返回json的方法是統一封裝response為JSONObject即可。舉例如下:importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;import.opensymphony.xwork2.Action;publilassTest{publicMapresponseJson;publicMapgetResponseJson(){returnresponseJson;}publicvoidsetResponseJson(MapresponseJson){this.responseJson=responseJson;}publicStringgetList(){Mapmap=newHashMap();List>list=newArrayList>();for(inti=0;im=newHashMap();m.put("id",i);m.put("name","Mic"+i);list.add(m);}map.put("rows",list);map.put("totalCont",3);this.setResponseJson(map);returnAction.SUCCESS;}}
可以的,以GET請求為例
var = require('');
var qs = require('querystring');
var data = {
a: 123,
time: new Date().getTime()};這是需要提交的數據輪早兄
var content = qs.stringify(data);
var options = {
hostname: 飗.0.0.1',
port: 10086,
path: '/pay/pay_callback?' + content,
method: 'GET'
};
var req = .request(options, function (res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function (e) {
console.log('problem with request: ' + e.message);
});
req.end();
1
這種方法有兩大步第一步是拼接需要的json數據,第二步是用servlet的內置對象response返回到前台。
2
String 類型的數據可以不用藉助任何工具直接返回,只要把它拼接對了就可以。如我需要返回一個{「suess」:true,「msg」:「修改失敗!」}的json,就可以如下圖這樣寫。(注意,java里的引號要用的轉義字元「」)
3
如果需要返回的是一個list或者別的類的化,需要用到JSONArray的輔助工具類,然後使用response.getWriter().print(),返回到打到前台。具體代碼如下圖。
END
方法2:用Spring框架
如果你使用了Spring框架那就更簡單了,你只需要在你的方法返回的時候加一個@ResponseBody的註解就可以了。就這么簡單。
在java中,調用請求介面,主要通過流的方式進行調用,示例介面如下:
/**
* 程序中訪問數據介面
*/
public String searchLoginService(String urlStr) {
/** 網路的url地址 */
URL url = null;
/** 連接 */
HttpURLConnection Conn = null;
/**** 輸入流 */
BufferedReader in = null;
StringBuffer *** = new StringBuffer(); ...
② json怎麼get獲取返回的數據
$.getJSON(url,[data],[callback])
代碼如下:
$.getJSON("data.php"吵逗巧,$("#firstName.val()"升鍵),function(jsonData){
$("#getJSONResponse").html(jsonData.id);}//無需設置,直接獲取的數據類型為json,
所以調用時需要使用jsonData.id方指升式
);
③ getmethod如何發送json數據
有時候我們在發送HTTP請求的時候會使用到POST方式,如果是傳送普通的表單數據那將很方便,直接將參數到一個Key-value形式的Map中即可。但是如果我們需要傳送的參數是Json格式的,會稍微有點麻煩,我們可以使用HttpClient類庫提供的功能來實現這個需求。假設我們需要發送的數據是:
1
{
2
"blog": "http://www.iteblog.com",
3
"Author": "iteblog"
4
}
我們可以通過JSONObject夠著Json:
1
JSONObject jsonObject = new JSONObject();
2
3
jsonObject.put("blog", "http://www.iteblog.com");
4
jsonObject.put("Author", "iteblog");
如果需要使用Post方式來發送這個數據,我們可以如下實現:
01
private HttpMethodBase createMethod(String url, int timeout) {
02
PostMethod method = null;
03
try {
04
method = new PostMethod(url);
05
JSONObject jsonObject = new JSONObject();
06
07
jsonObject.put("blog", "http://www.iteblog.com");
08
jsonObject.put("Author", "iteblog");
09
10
String transJson = jsonObject.toString();
11
RequestEntity se = new StringRequestEntity(transJson, "application/json", "UTF-8");
12
method.setRequestEntity(se);
13
//使用系統提供的默認的恢復策略
14
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
15
//設置超時的時間
16
method.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, timeout);
17
} catch (IllegalArgum www.hbbz08.com entException e) {
18
logger.error("非法的URL:{}", url);
19
} catch (UnsupportedEncodingException e) {
20
e.printStackTrace();
21
}
22
23
return method;
24
}
我們通過StringRequestEntity來構造請求實體,在這里,StringRequestEntity將接收三個參數,如下:
1
public StringRequestEntity(String content, String contentType, String charset)
2
throws UnsupportedEncodingException
其中參數content就是我們需要傳輸的數據;contentType是傳送數據的格式,因為我們的數據格式是json的,所以contentType必須填寫application/json(更多的contentType可以參見《HTTP Content-Type常用一覽表》);charset是字元集編碼。
然後我們再通過HttpClient對象的executeMethod方法來執行:
查看源代碼列印幫助
1
int statusCode = httpClient.executeMethod(getMethod);
2
//只要在獲取源碼中,伺服器返回的不是200代碼,則統一認為抓取源碼失敗,返回null。
3
if (statusCode != HttpStatus.SC_OK) {
4
logger.error("Method failed: " + getMethod.getStatusLine() + "\tstatusCode: " + statusCode);
5
return null;
6
}
④ 如何讀取Json文件的數據
json文件是一種輕量級的數據交互格式。一般在jquery中使用getJSON()方法讀取。
$.getJSON(url,[data],[callback])
url:載入的頁面地址
data: 可選項,發送到伺服器的數據,格式是key/value
callback:可選項,載入成功後執行的回調函數
1.首先建一個JSON格式的文件userinfo.json 保存用戶信息。如下:
?
1234567891011121314151617
[{"name":"張國立","sex":"男","email":"[email protected]"},{"name":"張鐵林","sex":"男","email":"[email protected]"},{"name":"鄧婕","sex":"女","email":"[email protected]"}]
2.其次建一個頁面用於獲取JSON文件里的用戶信息數據,並顯示
?
04142
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>getJSON獲取數據</title><script type="text/javascript" src="js/jquery-1.8.2.min.js"></script><style type="text/css">#divframe{ border:1px solid #999; width:500px; margin:0 auto;}.loadTitle{ background:#CCC; height:30px;}</style>< script type = "text/javascript" >$(function (){ $("#btn").click(function () { $.getJSON("js/userinfo.json", function (data){ var $jsontip = $("#jsonTip"); var strHtml = "123"; //存儲數據的變數 $jsontip.empty(); //清空內容 $.each(data, function (infoIndex, info){ strHtml += "姓名:" + info["name"] + "<br>"; strHtml += "性別:" + info["sex"] + "<br>"; strHtml += "郵箱:" + info["email"] + "<br>"; strHtml += "<hr>" }) $jsontip.html(strHtml); //顯示處理後的數據 }) })})</script></head><body><div id="divframe"><div class="loadTitle"><input type="button" value="獲取數據" id="btn"/></div><div id="jsonTip"></div></div></body></html>
⑤ Get方式如何傳遞參數
在列出post與get的區別:
1.Post傳輸數據時,不需要在URL中顯示出來,而Get方法要在URL中顯示。
2.Post傳輸的數據量大,可以達到2M,而Get方法由於受到URL長度的限制,只能傳遞大約1024位元組.
3.Post顧名思義,就是為了將數據傳送到伺服器段,Get就是為了從伺服器段取得數據.而Get之所以也能傳送數據,只是用來設計告訴伺服器,你到底需要什麼樣的數據.Post的信息作為http請求的內容,而Get是在Http頭部傳輸的。
get和post的區別
1get方式傳遞的參數可以在頁面上看見,So安全性不高,反之post安全性高
2get方式傳遞的速度快。
在後台定義了get,set方法可以直接獲取,不用getParameter("name");
$.get(....) $.ajax(....) $.getJSON(....)3個都是ajax傳遞
只是方式不同。
$.get()是以get方式傳遞到後台
$.ajax()需要你配置傳遞到後台的方式,而且功能比$.get()方法多,建議使用這個方法
$.getJSON()傳遞的是json數據類型
開發經驗表明,兩者最重要的區別是:get不能傳中文,會亂碼,而post就不會出現亂碼問題了
首先看一下get、post的區別 1、 get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。 2、 對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用Request.Form獲取提交的數據。兩種方式的參數都可以用Request來獲得。 3、get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,因伺服器的不同而異. 4、get安全性非常低,post安全性較高。 5、 <form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一樣的,也就是說,action頁面後邊帶的參數列表會被忽視;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一樣的。 另外 Get請求有如下特性:它會將數據添加到URL中,通過這種方式傳遞到伺服器,通常利用一個問號?代表URL地址的結尾與數據參數的開端,後面的參數每一個數據參數以「名稱=值」的形式出現,參數與參數之間利用一個連接符&來區分。 Post請求有如下特性:數據是放在HTTP主體中的,其組織方式不只一種,有&連接方式,也有分割符方式,可隱藏參數,傳遞大批數據,比較方便。 總而言之:當我們在提交表單的時候我們通常用post方式,當我們要傳送一個較大的數據文件時,需要用post。當傳遞的值只需用參數方式(這個值不大於2KB)的時候,用get方式即可。
所以對於ajax提交兩者用法自然就明了了
⑥ get請求參數是json格式的數據,怎麼請求
get請求一般是在你請求的地址後邊 加上 ?par=''&par2='' 例如 請求的頁面是 a.do(假設你後台是java) 那麼 請求地址是這樣的
⑦ 如何調用http介面獲取json數據及GET/POST方式調用http介面
HTTP介面返回的JSON數據,其實就是HTTP請求後返回的HTTP主體那一部分。
HTTP協議規定,HTTP頭部和HTTP主體之間是以一個空行分割的。因為HTTP每一行(每一行是指一個頭部欄位)是以\r\n結束的,一個空行的\r\n,再加上最後一行的結束符\r\n,一起是\r\n\r\n,也就是說,當檢測到\r\n\r\n四個字元時,下一個字元開始就是HTTP body的內容了。把HTTP響應主體保存下來就是JSON數據了。
⑧ httpclient能通過get類型請求發送json數據嗎
http://www.tuicool.com/articles/Unumeu,里抄面有get和post請求。
⑨ 怎樣使GeoServer在WMS的GetFeatureInfo請求返回JSON格式數據
主要思路是使用自定義模版來實現。
1、定位到路頌毀世徑:
GEOSERVER_DATA_DIR/workspaces/{workspace}/{datastore}/{featuretype}/
2、在上一步的目錄下創建三個空的文本文件,並將文件名稱修改為: header.ftl、content.ftl、footer.ftl
3、用記事本打開content.ftl文件,將下面的文本內容粘貼復制進去,然後保存。
[
<#list features as feature>
{ "Type": "${type.name}"
<#list feature.attributes as attribute>
<#if !attribute.isGeometry>
, "${attribute.name}": "${attribute.value}"
</#if>
<余此/#list>
}
</#list> ,{}
]
4、在客戶端調用WMS getFeatureInfo請求就可以看到返回的是JSON字元野肢串了。
注意:這種方式返回的數據如果有「數值」類型的數據將一並當作字元串處理。