这是我第一次在任何应用程序中使用JSON
System.Net
和WebRequest
。我的应用程序应该将JSON有效负载(类似于以下内容)发送到身份验证服务器:
{
"agent": {
"name": "Agent Name",
"version": 1
},
"username": "Username",
"password": "User Password",
"token": "xxxxxx"
}
为了创建此有效负载,我使用了JSON.NET
库。如何将这些数据发送到身份验证服务器并接收其JSON响应?这是一些示例中看到的内容,但没有JSON内容:
var http = (HttpWebRequest)WebRequest.Create(new Uri(baseUrl));
http.Accept = "application/json";
http.ContentType = "application/json";
http.Method = "POST";
string parsedContent = "Parsed JSON Content needs to go here";
ASCIIEncoding encoding = new ASCIIEncoding();
Byte[] bytes = encoding.GetBytes(parsedContent);
Stream newStream = http.GetRequestStream();
newStream.Write(bytes, 0, bytes.Length);
newStream.Close();
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
但是,这似乎与使用我过去使用的其他语言相比有很多代码缺陷。我这样做正确吗?以及如何获取JSON响应以进行解析?
谢谢,精英。
更新的代码
// Send the POST Request to the Authentication Server
// Error Here
string json = await Task.Run(() => JsonConvert.SerializeObject(createLoginPayload(usernameTextBox.Text, password)));
var httpContent = new StringContent(json, Encoding.UTF8, "application/json");
using (var httpClient = new HttpClient())
{
// Error here
var httpResponse = await httpClient.PostAsync("URL HERE", httpContent);
if (httpResponse.Content != null)
{
// Error Here
var responseContent = await httpResponse.Content.ReadAsStringAsync();
}
}
我发现自己使用HttpClient库查询RESTful
API,因为代码非常简单并且完全异步。
(编辑:为了清楚起见,从问题中添加JSON)
{
"agent": {
"name": "Agent Name",
"version": 1
},
"username": "Username",
"password": "User Password",
"token": "xxxxxx"
}
使用两个代表您发布的JSON结构的类,看起来像这样:
public class Credentials
{
[JsonProperty("agent")]
public Agent Agent { get; set; }
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
[JsonProperty("token")]
public string Token { get; set; }
}
public class Agent
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("version")]
public int Version { get; set; }
}
您可能有一个像这样的方法,它将执行您的POST请求:
var payload = new Credentials {
Agent = new Agent {
Name = "Agent Name",
Version = 1
},
Username = "Username",
Password = "User Password",
Token = "xxxxx"
};
// Serialize our concrete class into a JSON String
var stringPayload = await Task.Run(() => JsonConvert.SerializeObject(payload));
// Wrap our JSON inside a StringContent which then can be used by the HttpClient class
var httpContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
using (var httpClient = new HttpClient()) {
// Do the actual request and await the response
var httpResponse = await httpClient.PostAsync("http://localhost/api/path", httpContent);
// If the response contains content we want to read it!
if (httpResponse.Content != null) {
var responseContent = await httpResponse.Content.ReadAsStringAsync();
// From here on you could deserialize the ResponseContent back again to a concrete C# type using Json.Net
}
}
本文向大家介绍JavaScript 通过POST发送和接收JSON数据,包括了JavaScript 通过POST发送和接收JSON数据的使用技巧和注意事项,需要的朋友参考一下 示例 6 提取请求承诺最初将返回Response对象。它们将提供响应头信息,但它们不直接包含响应主体,而响应主体可能尚未加载。可以使用诸如Response对象上的方法来等待响应主体加载,然后对其进行解析。.json()
问题内容: 我在javascript中创建了一个函数,像这样: 我调用了脚本文件,并将其用于方法。 在控制器中,我有此操作 但是随着方法参数变为空。 该模型: 用POST发送数据时,我该如何采取行动方法? 我不知道该怎么用。另外,可以通过JSON将响应发送回(到ajax)吗? 问题答案: 建立模型 像下面的控制器 Java脚本
问题内容: 我正在尝试为请求和响应应用程序创建桌面客户端。 我能够轻松地执行GET请求。但是我想知道是否有人可以帮助我确定如何进行JSON请求和响应。并将其解析为字符串,从那里我可以锻炼如何将其全部切开 问题答案: Json.net在.net世界中无处不在。
问题内容: 我试图了解如何使用JSON,在此过程中,我试图从Struts2操作获取JSON响应并显示响应警报。为此,我在JavaScript中使用Ajax POST,如下所示: 我的动作类包含一个字段,我试图将其作为JSON响应显示在警报中。但是我发现这样做有问题。我想念什么或做错什么? 我的动作课如下: 文件: 我的: 问题答案: 我通过在json结果上添加myMsg解决了我的问题。谢谢你的帮助
问题内容: 我正在执行一个Android程序,该程序应该将数据从平板电脑发送到PHP Web服务。发送JSON的代码: PHP Web服务: 我尝试了获取JSON的不同方法,但没有一个对我有用。也许StackOverflow的优秀人才可以帮助我解决这个问题,因为他们总是遇到我遇到的其他所有问题。 问题答案: 在注释部分,您似乎只希望将JSON发送到您的PHP脚本。通常,您将POST发布到PHP,然
问题内容: 我已经设置好OkHttpClient并成功将GET请求发送到服务器。而且,我还可以将带有空body标签的POST请求发送到服务器。 现在,我正在尝试将以下JSON对象发送到服务器。 为此,我尝试添加OkHttpClient库类,但无法将JSON对象作为http POST请求的主体发送。我尝试通过以下方式构建主体并处理发布请求。 通过POST请求将JSON对象发送到服务器的方式是什么。