我一直在忙着JSON一段时间,只是把它作为文本推出它并没有伤害任何人(我知道),但我想开始正确地做事.
我见过这样的JSON内容类型很多所谓的"标准":
application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
Run Code Online (Sandbox Code Playgroud)
但哪个是正确的,还是最好的?我认为它们之间存在安全性和浏览器支持问题.
我知道有一个类似的问题,如果REST API返回JSON,那么MIME类型是什么?,但我想要一个稍微有针对性的答案.
.NET Framework 4.5中的System.Net.Http.HttpClient和System.Net.Http.HttpClientHandler实现了IDisposable(通过System.Net.Http.HttpMessageInvoker).
该using
声明文件说:
通常,当您使用IDisposable对象时,您应该在using语句中声明并实例化它.
这个答案使用了这种模式:
var baseAddress = new Uri("http://example.com");
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
{
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("foo", "bar"),
new KeyValuePair<string, string>("baz", "bazinga"),
});
cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value"));
var result = client.PostAsync("/test", content).Result;
result.EnsureSuccessStatusCode();
}
Run Code Online (Sandbox Code Playgroud)
但是微软最明显的例子并没有Dispose()
明确地或隐含地调用.例如:
我试图从我的web应用程序调用web api.使用.net 4.5并在编写代码时我收到错误HttpClient不包含定义PostAsJsonAsync方法
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:51093/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var user = new Users();
user.AgentCode = 100;
user.Remarks = "Test";
user.CollectionDate = System.DateTime.Today;
user.RemittanceDate = System.DateTime.Today;
user.TotalAmount = 1000;
user.OrgBranchID = 101;
var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:51093/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var user = new Users();
user.AgentCode = 100;
user.Remarks = "Test";
user.CollectionDate = System.DateTime.Today;
user.RemittanceDate = System.DateTime.Today;
user.TotalAmount = 1000;
user.OrgBranchID = 101;
var …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用C#进行json调用.我开始创建一个电话,但它不起作用:
public bool SendAnSMSMessage(string message)
{
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("http://api.pennysms.com/jsonrpc");
request.Method = "POST";
request.ContentType = "application/json";
string json = "{ \"method\": \"send\", "+
" \"params\": [ "+
" \"IPutAGuidHere\", "+
" \"msg@MyCompany.com\", "+
" \"MyTenDigitNumberWasHere\", "+
" \""+message+"\" " +
" ] "+
"}";
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(json);
writer.Close();
return true;
}
Run Code Online (Sandbox Code Playgroud)
任何关于如何使这项工作的建议将不胜感激.
我想使用C#在POST请求中发送json数据.
我尝试了很多方法,但面临很多问题.我需要请求使用请求体作为来自字符串的原始json和来自json文件的json数据.
如何使用这两种数据表单发送请求.
例如:对于json中的身份验证请求体 - > {"Username":"myusername","Password":"pass"}
对于其他API请求体应从外部json文件中检索.
我发送httpwebrequests到paypal api服务器,这使用https.我做了你通常用http请求做的正常事情,并且它有效.我是否需要做一些特别的事情才能正确使用https,或者在请求URL中指定https以使其正常工作?
谢谢!
顺便说一句,我的请求是从我的服务器发送的,因此加密它们并不像从客户端计算机发送它们那么重要,但我仍然想做正确的事.
我不知道如何使用HttpClient POST JSON.我找到了一些解决方案,像这样,但我必须使用HttpClient,导致异步并且必须添加标头.
这是我的代码.知道怎么解决吗?
List<Order> list = new List<Order> { new Order() { Name = "CreatedTime", OrderBy = 1 } };
Queues items = new Queues { Orders = list };
var values = new Dictionary<string, string> { { "Orders", JsonConvert.SerializeObject(list) } };
var content = new FormUrlEncodedContent(values);
//HttpContent cc = new StringContent(JsonConvert.SerializeObject(items));
_msg = await _client.PostAsync(input, content);
//_msg = await _client.PostAsync(input, cc);
var response = await _msg.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud) 我试图找出解析.NET 3.5中传入的JSON服务器端的最佳方法.我从JSON Formate的HttpWebResponse收到"title".所以我必须检索每个标题并存储在数据库中.所以请提供检索每个标题的代码.
public class MyObject
{
public ArrayList list { get; set; }
}
var request = WebRequest.Create("https://api.dailymotion.com/videos?fields=description,thumbnail_medium_url%2Ctitle&search=Good+Morning");
using (var twitpicResponse = (HttpWebResponse)request.GetResponse())
{
using (var reader = new StreamReader(twitpicResponse.GetResponseStream()))
{
JavaScriptSerializer js = new JavaScriptSerializer();
string objText = reader.ReadToEnd();
MyObject myojb = (MyObject)js.Deserialize(objText, typeof(MyObject));
}
}
Run Code Online (Sandbox Code Playgroud)
我在myojb中收到了Title,但是如何从myojb中检索每个Title.
有谁知道如何在c#中创建gmail帐户(以编程方式).我推荐此链接https://developers.google.com/admin-sdk/directory/v1/guides/manage-users.
c# ×8
json ×6
asp.net ×2
.net-4.5 ×1
asp.net-mvc ×1
content-type ×1
google-api ×1
http-headers ×1
https ×1
idisposable ×1
rest ×1
ssl ×1
using ×1
web-services ×1