2017-02-17 4 views
0

Я пытаюсь вызвать RESTful API, но по какой-то причине, когда я делаю вызов, я, кажется, вызываю localhost вместо указанного URI.WebRequest вызывает localhost

Вот код, я работаю с:

using System.IO; 
using System.Net; 

namespace WebApi.Models 
{ 
    public class GET 
    { 
     public static void Main() 
     { 
      /* The XML Request */ 
      string xmlRequest = @" 
      <request>   
       <auth> 
        <type>basic</type> 
        <username>USERNAME</username> 
        <password>PASSWORD</password> 
       </auth> 
       <method> 
        <name>getProperties</name> 
        <params> 
         <propertyIds>356930</propertyIds> 
         <showAllStatus>0</showAllStatus> 
        </params> 
       </method> 
      </request>"; 

      /* Initiate a Web Request object */ 
      WebRequest request = WebRequest.Create ("https://ach.entrata.com/api/properties"); 
      request.Method = "GET"; 

      /* Initiate the request writer */ 
      StreamWriter requestWriter = new StreamWriter(request.GetRequestStream()); 

      /* If you want to send an XML Request, use these options */ 
      request.ContentType = "APPLICATION/XML; CHARSET=UTF-8"; 
      requestWriter.Write(xmlRequest); 

      requestWriter.Close(); 

      /* Read the response */ 
      StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); 
      string responseData = responseReader.ReadToEnd(); 
      responseReader.Close(); 
     } 
    } 
} 

А вот скриншот ответа: Error Message

Обратите внимание, что утверждает, что запрашиваемый URL является http://localhost:62324/, а не URI я указал в моем коде. Я пропустил что-то очевидное здесь?

+0

Вы использовали скрипач, чтобы посмотреть, куда идет запрос? Когда я просмотрел 'https: // ach.entrata.com/api/properties' в google chrome, он взял меня на страницу документации API' https://ach.entrata.com/api/documentation'. Сначала вы должны проверить, если запрос действительно подходит к указанному URL. –

+0

Я не знал, что скрипач был чем-то. Я посмотрю на это. Однако это был URL-адрес запроса, предоставленный мне – Mitch

+0

Как вы получили этот снимок экрана? Вы пытались найти URL-адрес где-то? –

ответ

0

Я понял. Я буду вставлять фиксированный код здесь, если кто-то еще столкнется с этой проблемой в будущем. Основная ошибка заключалась в том, что я пытался запустить код в качестве веб-приложения, когда ему нужно было консольное приложение. Кроме того, я пытался запустить GET-вызов, но для отправки аргументов запроса серверу требуется POST-вызов. После этого у меня была еще одна небольшая ошибка, и я установил его, перемещая @»на следующую строку, чтобы устранить все ведущие пробелы. После того, как это было сделано мой код побежал штраф и вернул информацию в окне консоли отлично.

using System; 
using System.IO; 
using System.Net; 

namespace Console_API_Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      /* The XML Request */ 
      string xmlRequest = 
      @"<request> 


      <auth> 

       <type> basic </type> 

       <username> USERNAME </username> 

       <password> PASSWORD </password> 

      </auth> 

      <method> 

       <name> getProperties </name> 

       <params> 

        <propertyIds> 356930 </propertyIds> 

        <showAllStatus> 0 </showAllStatus> 

       </params> 

       </method> 

     </request>"; 


     /* Initiate a Web Request object */ 
     WebRequest request = WebRequest.Create("https://ach.entrata.com/api/properties"); 
     request.Method = "POST"; 

     /* Initiate the request writer */ 
     StreamWriter requestWriter = new StreamWriter(request.GetRequestStream()); 

     /* If you want to send an XML Request, use these options */ 
     request.ContentType = "APPLICATION/XML; CHARSET=UTF-8";        
     requestWriter.Write(xmlRequest); 

     requestWriter.Close(); 

     /* Read the response */ 
     StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); 
     string responseData = responseReader.ReadToEnd(); 
     responseReader.Close(); 
     Console.WriteLine(responseData); 
    } 
} 
} 
Смежные вопросы