当前位置: 首页 > 知识库问答 >
问题:

asp.netMVC项目-如何在控制器中使用API url

云浩然
2023-03-14

我需要调用这个APIfreegeoip.net/xml/userIpAddress在我的控制器得到它的数据。

这是我的控制器

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响应的外观:

<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>

共有1个答案

法烨华
2023-03-14

使用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; }
}
 类似资料:
  • 问题内容: 我写了一个过滤器函数,它将根据您传递的参数返回数据。我希望控制器具有相同的功能。是否可以在控制器中重用过滤器功能? 到目前为止,这是我尝试过的: 问题答案: 将 $ filter 注入控制器 然后,无论您想在哪里使用该过滤器,都可以像这样使用它: 如果要将参数传递给该过滤器,请使用单独的括号进行处理: 您要过滤的数组在哪里,并且是用于过滤的对象。

  • 我一直在尝试将文件从rest客户端发送到我的spring控制器。在控制器中,我使用“@requestParam(“file”)MultipartFile file”从客户端获取文件,并使用REST服务注释进行注释,如下所示 我总是得到415媒体类型不支持。在上面的方法中,如果我不给多部分,它给我的结果是完成了,但不是多部分。 所以我可以知道如何发送文件到我的Spring控制器?

  • 我接管了一个web应用程序,它将web api和mvc控制器分为两个项目。Web Api网站有自己的基本Api url localhost:0000,mvc网站有localhost:1111。我正在生成一个通过电子邮件发送的点击链接,目的是让用户返回mvc网站上的注册页面。现在,我唯一的选择是从webApi控制器执行此操作,但是当我使用Url生成链接时。链接或Url。内容我总是得到WebApi l

  • 问题内容: 使用SceneBuilder。我有2个阶段,每个阶段都有一个控制器: , 。 Stage1Controller: Stage2Controller: 这是使用2种方法 (称为in 方法)将这两个fxml文件加载到Main.java类中的方式: 该方法在第一阶段中用作方法,它在两个阶段都转换视图。 如何输入方法?谢谢 问题答案: “快速又脏”的方法是给的引用: 现在在您的主应用程序中:

  • 我对Spring框架是完全陌生的。我有一个任务是在Spring上制作电话簿应用程序。我需要登记和授权,还有我的电话簿。我有两个控制器,第一个是控制授权和注册的UserController 当我尝试进行身份验证或注册时。新用户我有这样的错误: NestedServletException:请求处理失败;嵌套异常是java.lang.IllegalStateException:映射到HTTP路径“HT