2017-06-12 20 views
-1

コントローラのデータを取得するには、このAPI freegeoip.net/xml/userIpAddressを呼び出す必要があります。asp.net MVCプロジェクト - コントローラでAPI URLを使用する方法

<Response> 
<IP>4.2.2.2</IP> 
<CountryCode>US</CountryCode> 
<CountryName>United States</CountryName> 
<RegionCode/> 
<RegionName/> 
<City/> 
<ZipCode/> 
<TimeZone/> 
<Latitude>37.751</Latitude> 
<Longitude>-97.822</Longitude> 
<MetroCode>0</MetroCode> 
</Response> 
+0

あなたが作るために 'HttpClient'を使用することができますが、このfreegeoip.net/xml/4.2.2.2

のようにここに私のコントローラここ

public ActionResult Index(string language) { if (String.IsNullOrWhiteSpace(language) == false) { Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language); Thread.CurrentThread.CurrentUICulture = new CultureInfo(language); } else if (String.IsNullOrWhiteSpace(language)) { string userIpAddress = this.Request.UserHostAddress; //here how I can call freegeoip.net/xml/userIpAddress } } 

は、XML応答が見えるものですIPアドレスを含む構築されたURLへのリクエスト。私はそれをサービスにラップ/抽出することをお勧めします。 – Nkosi

+0

@Nkosiありがとうございました。私の質問に答えることができますか、私に詳細を教えてください。お願いします。大変ありがとうございます –

答えて

2

使用HttpClient

public async Task<ActionResult> Index(string language) 
{ 
    if (String.IsNullOrWhiteSpace(language) == false) 
    { 
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(language); 
    } 

    else if (String.IsNullOrWhiteSpace(language)) 
    { 
     string userIpAddress = this.Request.UserHostAddress; 

     var client = new HttpClient 
     { 
      BaseAddress = new Uri("http://freegeoip.net/xml/") 
     }; 

     var response = await client.GetAsync(userIpAddress); 

     var content = await response.Content.ReadAsStringAsync(); 

     var result = (Response)new XmlSerializer(typeof(Response)).Deserialize(new StringReader(content)); 

     // do stuff 
    } 

    ... 
} 

[XmlRoot(ElementName = "Response")] 
public class Response 
{ 
    [XmlElement(ElementName = "IP")] 
    public string IP { get; set; } 
    [XmlElement(ElementName = "CountryCode")] 
    public string CountryCode { get; set; } 
    [XmlElement(ElementName = "CountryName")] 
    public string CountryName { get; set; } 
    [XmlElement(ElementName = "RegionCode")] 
    public string RegionCode { get; set; } 
    [XmlElement(ElementName = "RegionName")] 
    public string RegionName { get; set; } 
    [XmlElement(ElementName = "City")] 
    public string City { get; set; } 
    [XmlElement(ElementName = "ZipCode")] 
    public string ZipCode { get; set; } 
    [XmlElement(ElementName = "TimeZone")] 
    public string TimeZone { get; set; } 
    [XmlElement(ElementName = "Latitude")] 
    public string Latitude { get; set; } 
    [XmlElement(ElementName = "Longitude")] 
    public string Longitude { get; set; } 
    [XmlElement(ElementName = "MetroCode")] 
    public string MetroCode { get; set; } 
} 
+0

ありがとうございます。何が応答してレンダリングした後? –

+1

レスポンスを逆シリアル化する方法を意味しますか?その場合:https://stackoverflow.com/questions/19942486/how-to-use-httpclient-to-read-an-xml-response – peco

+0

ありがとうございます。役に立った私はAPIの本当に新しいです。それを完了するためにステップバイステップで私を助けることは可能ですか?今私はクラスを作成する必要がありますか? –

関連する問題