gpt4 book ai didi

c# - C#中的rest调用post方法

转载 作者:行者123 更新时间:2023-11-30 23:04:19 25 4
gpt4 key购买 nike

我正在为 get 和 post 方法编写 restcalls。这是代码。

public class RestCall
{
public static string loginJsonString;
public static string xmlResult;

// GET: RestCall
public async Task RunAsync(string name, string value)
{
using (var handler = new HttpClientHandler { UseDefaultCredentials = true })
using (var client = new HttpClient(handler))
{
var byteArray = Encoding.ASCII.GetBytes("username:password");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var urlRestGet = HomeController.url;
client.BaseAddress = new Uri(urlRestGet + "?name=" + name + "&value=" + value + "");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(urlRestGet + "?name=" + name + "&value=" + value + "");

if (response.IsSuccessStatusCode)
{
//Get the response
loginJsonString = await response.Content.ReadAsStringAsync();

//Converting to xml
using (var stream = new MemoryStream(Encoding.ASCII.GetBytes(loginJsonString)))
{
var output = new XmlDictionaryReaderQuotas();
xmlResult=XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(stream, output)).ToString();
}
}
}
}
//Post
public async Task RunAsync()
{
using (var handler = new HttpClientHandler { UseDefaultCredentials = true })
using (var client = new HttpClient(handler))
{
HttpResponseMessage response;
Vehicle vehicle = new Vehicle();
vehicle.Model = "Vehicle1";
vehicle.Description = "Description1ForVehicle1";
vehicle.ETag = "";
response = await client.PostAsJsonAsync("xxx",vehicle);
if(response.IsSuccessStatusCode){
Uri vehicleUri = response.Headers.Location;
}
}
}
}
}

我的 get 方法工作正常。但是 post 方法抛出异常“无法加载文件或程序集‘Newtonsoft.Json,Version=4.5.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed’或其依赖项之一。系统找不到指定的文件。”

1)如果是 newtonsoft 错误,为什么我的 get 方法有效?

2)我该如何解决这个问题?

我的 web.config 文件显示,

    <dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral"
publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>

最佳答案

您的项目中似乎没有引用 Newtonsoft.Json 程序集。

这可能是由于:

  1. 如果您(强制)从您的项目中删除了 Newtonsoft.Json Nuget 包。
  2. 如果你有错误的绑定(bind)重定向(检查你的web.config)
  3. 错误的程序集被加载到 /bin,这可能是由错误的 HintPath 属性引起的

最后,您的 Read 方法有效,因为您没有使用 Newtonsoft.Json 来反序列化您获得的响应。但是,Post 方法会导致异常,因为您使用的是底层依赖于 Newtonsoft.Json 库的 PostAsJsonAsync 方法。

关于c# - C#中的rest调用post方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49447533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com