2013-09-05 2 views
2

Я использую следующий код, чтобы получить результат 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 на стороне клиента.

ответ

1

Вопрос был о печенье. Когда я забыл установить файлы cookie, запрос перенаправлялся. Я должен был установить контейнер для печенья, используя

request.CookieContainer = new CookieContainer(); 
Смежные вопросы