gpt4 book ai didi

c# - 使用 C# 代码使用 REST 服务

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:18 25 4
gpt4 key购买 nike

我正在使用以下代码从服务中获取 json 结果。它适用于 get 方法。但是当方法类型为POST时,请求地址变为之前的地址。

即;

第一次调用此方法时 request.address=XXXXX.com:1234/xxx/oldv1.json(方法类型为 get)

它返回一个 json 字符串,我从中提取另一个地址:XXXXX.com:1234/xxx/newv1.json现在,我使用此端点和方法类型 POST、contenttype="application/x-www-form-urlencoded"调用 makerequest 方法。

当我使用 (var response = (HttpWebResponse)request.GetResponse()) 将 breakpint 置于 并检查 request.address 值时,它是 XXXXX.com:1234/xxx/newv1.json

但是在执行该行之后,地址更改为 XXXXX.com:1234/xxx/oldv1.json 并且该函数返回与第一个端点相同的响应(XXXXX .com:1234/xxx/oldv1.json)。谁能告诉我这里做错了什么?

有没有更好的方法使用 POST 方式消费服务?

public string MakeRequest(string EndPoint,string Method, string contentType)
{
var request = (HttpWebRequest)WebRequest.Create(EndPoint);

request.Method = Method;
request.ContentLength = 0;
request.ContentType =contentType;

if ( Method == HttpVerb.POST)
{
var encoding = new UTF8Encoding();
var bytes = Encoding.GetEncoding("iso-8859-1").GetBytes("username=123&password=123");
request.ContentLength = bytes.Length;

using (var writeStream = request.GetRequestStream())
{
writeStream.Write(bytes, 0, bytes.Length);
}
}
using (var response = (HttpWebResponse)request.GetResponse())// request.address changes at this line on "POST" method types
{
var responseValue = string.Empty;

if (response.StatusCode != HttpStatusCode.OK)
{
var message = String.Format("Request failed. Received HTTP {0}", response.StatusCode);
throw new ApplicationException(message);
}

// grab the response
using (var responseStream = response.GetResponseStream())
{
if (responseStream != null)
using (var reader = new StreamReader(responseStream))
{
responseValue = reader.ReadToEnd();
}
}

return responseValue;
}

编辑:昨天我问了THIS Question关于在客户端使用服务,许多人建议它需要在服务器端完成,因为其他域可能不允许在客户端访问 json 结果。

最佳答案

问题是关于 cookie 的。由于我忘记设置 cookie,请求被重定向。我必须使用

设置 cookie 容器
 request.CookieContainer = new CookieContainer();

关于c# - 使用 C# 代码使用 REST 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633850/

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