① 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
② 如何設置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讀取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的功能,而且沒有額外的開銷。
④ Asp.netCore3.0 WebApi從0到1手摸手教你寫【1】簡單的webapi介面
Visual Studio 2019
.net core 3.0
具體步驟如下圖:
此處我們選擇API(新手不推薦選擇空項目,選擇API系統會為我們自動創建WebApi需要的一些配置文件等),Https配置這一項我們暫時不勾選,目前我們不配置Https。
F5運行項目,然後就可以看到微軟為我們寫好的一個天氣預報示例webapi了,這里只有一個Get請求示例,返回值為json格式。
注意: services.AddControllers(); 和 endpoints.MapControllers(); 方法成對出現, 這是.net core3.0中的最新寫法
ConfigureServices方法
用來向容器中注冊服務,注冊好的服務可以在其他地方進行調用.
Configure方法
用來配置中間件管道,即如何響應http請求.
1 右鍵刪除系統默認創建的 WeatherForecastController.cs 和 WeatherForecast.cs
2 新建一個控制器,命名: UserController.cs
問題來了,為啥直接給打開 weatherforecast ,而且還404了,別急,往下看。
(┬_┬)怎麼還是404?別急繼續往下看
上面增加 action 雖然能達到想要的結果,但是每次新建一個 Controller 都有寫個 action 萬一要是忘記了又要忙乎半天,有沒有一勞永逸的辦法呢?
繼續往下看:
1.首先去掉Controller里的 Route 和 ApiController
2.修改 Startup.cs ,增加路由模版:
今天就到這里,後期繼續完善我們的webapi。
https://github.com/xiaxiaoqian/NetCore3.0-WebApi
⑤ c#mvc中的webapi怎麼迫使服務端返回字元串
返回值是string就好了。
publicstringGet(intid)
{
return"字元串";
}
用AJAX取json格式的就是這樣的。
⑥ web前端怎麼調用api介面
1、首先需要確定第三方的介面的基本信息:地址、請求方式,參數、返回值,介面模式這里第三方的介面是restful風格的,採用get請求。
⑦ C#如何接受api傳來的json數據
不知道你使用的是哪種api,如果是webapi的話可以用HttpClient 訪問 api 獲取json數據。