我在便携式类库中使用HttpClient获得403

 姚姚姚YTLLL 发布于 2023-01-30 15:09

我有一个PCL,WP和WinStore项目.在PCL项目中,我有一个使用此方法的类:

    private async Task GetIpAddress()
    {
        const string url = "http://www.ip-adress.com/";
        const string buscar = "

Your IP address is:"; var client = new HttpClient(); var data = await client.GetStringAsync(url); if (data.IndexOf(buscar, StringComparison.Ordinal) <= -1) return; var IpAddress = data.Remove(0, data.IndexOf(buscar, StringComparison.Ordinal) + buscar.Length + 1); IpAddress = IpAddress.Remove(IpAddress.IndexOf("

", StringComparison.Ordinal)); return IpAddress; }

当我在Windows Phone项目上调用该方法时,可以完美地工作,但不能在Windows应用商店项目中运行.相反,我收到此错误消息:

消息403

1 个回答
  • 看来你需要凭据并指向api,这就是为什么它的"Forbiden"

    尝试像浏览器一样调用它:从另一个问题" HttpClient请求像浏览器 "

    void Main()
    {
    
        GetIP("http://www.ip-adress.com/");
    
    }
    
    async void GetIP(string url){
        try{
        "Looking Up".Dump("OK");
        var x = await  GetResponse(url);
        x.Dump();
        }
        catch(Exception e){
            e.Dump("Problems:");
        }
    }
    
    private static async Task<string> GetResponse(string url)
    {
        var httpClient = new HttpClient();
    
        httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml");
        httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
        httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
        httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");
    
        var response = await httpClient.GetAsync(new Uri(url));
    
        response.EnsureSuccessStatusCode();
        using (var responseStream = await response.Content.ReadAsStreamAsync())
        //using (var decompressedStream = new System.IO.Compression.GZipStream(responseStream, CompressionMode.Decompress))
        using (var streamReader = new StreamReader(responseStream))
        {
            return streamReader.ReadToEnd();
        }
    }
    

    //注意:我注释掉压缩,

    2023-01-30 15:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有