Ⅰ 桌面程序怎樣通過webapi獲取json數據
首先要思考下為什麼google要開發api呢,因為google的產品用戶很多,他們的需求也是各種各樣的,打個比方adwords,用戶可以下載google adwords editors這樣的桌面軟體去操作,也可以通過google adwords的界面去操作,但是用戶同時也要操作 推廣助手,有技術的客戶就想 能不能自己開發一款軟體 打通這2個產品google adwords和網路推廣,同時可以操作,所以api介面就給了這樣的可能,這是和同類型產品對接,方便用戶統一操作,
還有一個例子,google analytics自定義運用,每周都需要發報告給客戶,雖然google analytics有自動報告功能,但是如果有報告固定的格式,每周都是人共去google analytics裡面去拉數據 然後填進去的話, 完全可以用web或者客戶端的方式自動去取數據,然後填充到模板裡面(模板可以通過web方式整合成html代碼 再通過api把html代碼中的數字替換)再加個發信函數,這樣每個星期都可以有一份圖文並茂 並且隨時調整模板的報告郵件了,同時你甚至可以同時集合ga和adwords Bai的數據這樣就省掉大量人工發信的時間。這里api的作用是整合其他信息,一起製作需要的產品,節約時間
未來的社會是開發的社會,只有把產品的介面開放出來,用戶安裝自己的想法加以利用就可以讓產品使用的人更加方便
Google analytics的數據是支持通過api按需導出 甚至你可以製作成email或者整合在你的網站後台中,這些都只是需要api,再開始之前先介紹下
什麼是api呢 你可以理解就是通用的函數 可以調用google的服務的數據 例如google analytics數據,
什麼是token,token就是一串帳號密碼,不過這個是隨機變動的,因為在互聯網中傳輸信息,所以最好有一套隨機變動的密碼來保證信息的安全,
什麼是Python,python是一個很簡單的程序語言,安裝下就可以用就和vb一樣 但是他很強壯 據說只要電腦能做的事 他就能做 無所不能 和硬體交互也沒問題的
什麼是Json 文件 是一種類似txt文件的一種文本文件,這里用來保存機密的信息例如你的帳號密碼
什麼是Google api library庫,電腦安裝了python只能說是安裝了一個基本的語言環境,你要實現某些功能還需要程序,google把這些可以操作自己服務的基礎數據的文件打包成庫文件 記住這里的庫並不是所以的google的服務的程序都在裡面,只是定義了一個基本的介面和傳輸方法,你要運行google analytics 還是需要定義一些函數來操作的 然後再引用google api的 庫文件
什麼是客戶端 google的 api分多種 你既可以通過web 的應用來獲取數據(要綁定運行的網站的域名,主要也是為安全) 也可以通過本地的程序,這里為了演示方法 我用的本地程序,所以我這里的客戶端是桌面程序應用
Ⅱ asp.net webapi 控制器裡面的post方法是怎麼把json轉化為實體類的
var _data={Id:id,Name:name};
$.ajax({
type: "post",
url: "url",
data: _data,
success: function (data) {
}
})
Id 和 Name就對應作為後台參數,名字需要保持一致哦
Ⅲ c#mvc中的webapi怎麼迫使服務端返回字元串
返回值是string就好了。
publicstringGet(intid)
{
return"字元串";
}
用AJAX取json格式的就是這樣的。
Ⅳ webapi讀取json webapi讀取json時,獲取的數據為空(webhook)
轉載 在使用Web Api的時候,有時候只想返回JSON;實現這一功能有多種方法,本文提供兩種方式,一種傳統的,一種作者認為是正確的方法。
JSON in Web API – the formatter based approach
只支持JSON最普遍的做法是:首先清除其他所有的formatters,然後只保留JsonMediaTypeFormatter。
有了HttpConfiguration的實例,你將會很簡單的清除所有formatters,然後重新添加JsonMediaTypeFormatter。
實現代碼如下:
configuration.Formatters.Clear();
configuration.Formatters.Add(new JsonMediaTypeFormatter());這種方式雖然可以實現功能,但是所有的conent negotiation還是會發生,這就會產生以下額外的開銷了。因為,你已經知道要返回的結果了,也只想返回Json,其他的content negotiation都不需要了。
下面的方法可以很好的解決這個問題。JSON in Web API – the conneg based approach
最好的方法是使用自定義的只返回Json Result的content negotiation代替Web Api中默認的content negotiation。
Conneg通過實現IContentNegotiator的Negotiator方法實現擴展。Negotiator方法返回ContentNegotiationResult(它包裝了你選擇的headers和formatter)。
下面的方法通過傳遞一個JsonMediaTypeFormatter給自定義的conneg negotiator,讓它一直返回applicaton/json 的content-type以及JsonMediaTypeFormatter。這種方法避免了每次請求都要重新創建一次formatter。
代碼如下:
public class JsonContentNegotiator : IContentNegotiator
{
private readonly JsonMediaTypeFormatter _jsonFormatter;
public JsonContentNegotiator(JsonMediaTypeFormatter formatter)
{
_jsonFormatter = formatter;
}
public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters)
{
var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));
return result;
}
}接下來,你需要在HttpConfiguration實例上注冊你的新的實現機制:var jsonFormatter = new JsonMediaTypeFormatter();
//optional: set serializer settings here
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
通過替換默認的DefaultContentNegotiator,我們使用我們自定義的JsonContentNegotiator,它只支持Json,而且可以馬上返回。
如果你想更深入的了解Content Negotiation的知識,你可以查看作者的這篇文章。
總結
通過使用自定義的JsonContentNegotiator替換系統默認的DefaultContentNegotiator,很好的實現Web Api只返回Json的功能,而且沒有額外的開銷。
Ⅳ 如何設置webapi返回json或jsonp
ing System.Net;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Web;
using System.Net.Http;
using Newtonsoft.Json.Converters;
using System.Web.Http;
namespace Westwind.Web.WebApi
{
/// <summary>
/// Handles JsonP requests when requests are fired with text/javascript
/// </summary>
public class JsonpFormatter : JsonMediaTypeFormatter
{
public JsonpFormatter()
{
SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/javascript"));
JsonpParameterName = "callback";
}
/// <summary>
/// Name of the query string parameter to look for
/// the jsonp function name
/// </summary>
public string JsonpParameterName {get; set; }
/// <summary>
/// Captured name of the Jsonp function that the JSON call
/// is wrapped in. Set in GetPerRequestFormatter Instance
/// </summary>
private string JsonpCallbackFunction;
Ⅵ webapi 傳回xml或者json怎麼限定
返回的時候封裝成json即可。
參考: Student st1 = new Student(1, "dg", 18, new Date());
Student st2 = new Student(2, "dg", 18, new Date());
Student st3 = new Student(3, "dg", 18, new Date());
Student st4 = new Student(4, "dg", 18, new Date());
Student st5 = new Student(5, "dg", 18, new Date());
List li = new ArrayList();
JSONObject JO1 = new JSONObject(st1);
JSONObject JO2 = new JSONObject(st2);
JSONObject JO3 = new JSONObject(st3);
JSONObject JO4 = new JSONObject(st4);
JSONObject JO5 = new JSONObject(st5);
li.add(JO1);
li.add(JO2);
li.add(JO3);
li.add(JO4);
li.add(JO5);
JSONArray Ja = new JSONArray(li);
Map ma = new HashMap();
ma.put("Result", "OK");
ma.put("Records", Ja);
JSONObject js = new JSONObject(ma);
out.print(js);
返回結果:
{"Result":"OK","Records":[{"recordDate":"Fri Dec 16 17:54:39 CST 2011","name":"dg","age":18,"personId":1},{"recordDate":"Fri Dec 16 17:54:39 CST 2011","name":"dg","age":18,"personId":2},{"recordDate":"Fri Dec 16 17:54:39 CST 2011","name":"dg","age":18,"personId":3},{"recordDate":"Fri Dec 16 17:54:39 CST 2011","name":"dg","age":18,"personId":4},{"recordDate":"Fri Dec 16 17:54:39 CST 2011","name":"dg","age":18,"personId":5}]}
可以將存放Java對象的 列表 直接轉化為 json 數組 或對象,不必要過分麻煩的轉換。
從資料庫取出後換:
SourceDao sd = new SourceDao();
JSONArray ja = new JSONArray(sd.query(content));
Ⅶ 在WebApi中返回一個JSON格式的數據,如何到客戶端就變了
轉載 在使用Web Api的時候,有時候只想返回JSON;實現這一功能有多種方法,本文提供兩種方式,一種傳統的,一種作者認為是正確的方法。
JSON in Web API – the formatter based approach
只支持JSON最普遍的做法是:首先清除其他所有的formatters,然後只保留JsonMediaTypeFormatter。
有了HttpConfiguration的實例,你將會很簡單的清除所有formatters,然後重新添加JsonMediaTypeFormatter。
實現代碼如下:
configuration.Formatters.Clear();
configuration.Formatters.Add(new JsonMediaTypeFormatter());這種方式雖然可以實現功能,但是所有的conent negotiation還是會發生,這就會產生以下額外的開銷了。因為,你已經知道要返回的結果了,也只想返回Json,其他的content negotiation都不需要了。
下面的方法可以很好的解決這個問題。
JSON in Web API – the conneg based approach
最好的方法是使用自定義的只返回Json Result的content negotiation代替Web Api中默認的content negotiation。
Conneg通過實現IContentNegotiator的Negotiator方法實現擴展。Negotiator方法返回ContentNegotiationResult(它包裝了你選擇的headers和formatter)。
下面的方法通過傳遞一個JsonMediaTypeFormatter給自定義的conneg negotiator,讓它一直返回applicaton/json 的content-type以及JsonMediaTypeFormatter。這種方法避免了每次請求都要重新創建一次formatter。
代碼如下:
public class JsonContentNegotiator : IContentNegotiator
{
private readonly JsonMediaTypeFormatter _jsonFormatter;
public JsonContentNegotiator(JsonMediaTypeFormatter formatter)
{
_jsonFormatter = formatter;
}
public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters)
{
var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));
return result;
}
}接下來,你需要在HttpConfiguration實例上注冊你的新的實現機制:
var jsonFormatter = new JsonMediaTypeFormatter();
//optional: set serializer settings here
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
通過替換默認的DefaultContentNegotiator,我們使用我們自定義的JsonContentNegotiator,它只支持Json,而且可以馬上返回。
如果你想更深入的了解Content Negotiation的知識,你可以查看作者的這篇文章。
總結
通過使用自定義的JsonContentNegotiator替換系統默認的DefaultContentNegotiator,很好的實現Web Api只返回Json的功能,而且沒有額外的開銷。
Ⅷ js調用跨域get請求調用asp.net webApi 多出個options請求是為什麼
出於安全的考慮,JS是不允許跨域訪問的。
但是如果你非要用JS實現,你可以寫一個hander,然後JS調用這個hander。
Ⅸ .net webapi怎麼接收到json格式的參數
參數直接用model,調用的時候給按這個model 的格式序列化,映射到action的時候,自動會轉換為對應的model
Ⅹ C#怎麼從http上返回JSON數據並讀取
你這個應該是兩個問題,
1、如何從http返回json
2、如何使用C#讀取從http返回的json
解決方案:
問題1:http返回json可以使用webapi技術,自己開發一個webapi介面用於從資料庫讀取並提供數據。
問題2:首先要說一下,http的json如果是前端程序還是用javascript讀取比較好。如果是後端的話,只能使用C#讀取,使用HttpClient或者HttpWebRequest。
HttpClient方式:
using (WebClient client = new WebClient())
{
client.Headers["Type"] = "GET";
client.Headers["Accept"] = "application/json";
client.Encoding = Encoding.UTF8;
client.DownloadStringCompleted += (senderobj, es) =>
{
var obj = es.Result;
};
client.DownloadStringAsync("http://localhost:41558/api/Demo");
}
HttpWebRequest方式:略(寫上之後網路頁面報錯!!!)
另外http方式的調用,分為get、post、put等方式。需要注意伺服器端的情況。
上述例子引用自http://www.cnblogs.com/MuNet/p/6732338.html