Я использую следующий код, чтобы получить результат json от службы. Он отлично работает для методов get
. Но когда тип метода равен POST
, адрес запроса изменяется на предыдущий адрес.Использование службы REST с кодом C#
ie;
на первом вызове этого метода 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;
}
EDIT: Вчера я спросил THIS Question о потреблении услуги на стороне клиента, и многие предполагают, что это должно быть сделано на стороне сервера, как другой домен не может позволить получить доступ к результату JSon на стороне клиента.