我正在使用一个asp.net应用程序,我使用HttpClient调用web api。
在web API控制器中我传递了两个参数,一个是int,第二个是string。
以下是代码:
public HttpResponseMessage Get(int submissionID, string jsonData)
{
}
当我使用httpClient
传递一个int和一个字符串参数时,这没有问题以下是我的httpClient代码:
public void GetWebApiData(int fileID, String jsonData)
{
var client = new HttpClient();
var task = client.GetAsync("http://localhost:1469/api/Smartling/" + fileID + "/"+jsonData)
.ContinueWith((taskwithresponse) =>
{
var response = taskwithresponse.Result;
var jsonString = response.Content.ReadAsStringAsync();
jsonString.Wait();
var getVal = jsonString.Result;
});
task.Wait();
}
在上面的代码中如果我传递而不是json数据,则会给出错误响应代码400 Bad Request。
我和jQuery ajax调用一样,它没有问题。
如何将JSON数据作为参数传递?
答案 0 :(得分:4)
假设你有一个班级
public class Sample
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}
在客户端
public async static Task<Boolean> GetWebApiData(int fileID,string jsonData)
{
var client = new HttpClient();
Sample model = new Sample();
model = Newtonsoft.Json.JsonConvert.DeserializeObject<Sample>(jsonData);
var response = await client.GetAsync(string.Format("http://sample.com/api/test/{0}?model.value1={1}&model.value2={2}", fileID ,model.Value1, model.Value2));
if (response.StatusCode == HttpStatusCode.OK)
return true;
else
return false;
}
在服务器端
[HttpGet]
public IHttpActionResult Get(int id,[FromUri]Sample model)
{
//do something
return Ok();
}
答案 1 :(得分:-1)
也请在
中使用“string”而不是“String”类public void GetWebApiData(int fileID,String jsonData)
如果不能正常工作
在将数据作为参数传递之前,请尝试使用stringify或SerializeObject()来转换该数据。
等等 JSON.stringify(jsonData); 要么 JsonConvert.SerializeObject(jsonData);