使用 C# 代码使用 REST 服务

本文关键字:REST 服务 代码 使用 | 更新日期: 2023-09-27 18:30:18

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

即;

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

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

当我把 breakpint 放在using (var response = (HttpWebResponse)request.GetResponse())并检查 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;
                }

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

使用 C# 代码使用 REST 服务

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

 request.CookieContainer = new CookieContainer();