如何为 HttpClient 建立合法的 URL

Posted

技术标签:

【中文标题】如何为 HttpClient 建立合法的 URL【英文标题】:How to build a legal URL for HttpClient 【发布时间】:2018-07-04 14:04:40 【问题描述】:

下面的代码似乎不起作用,我不确定如何为 HttpClient 构建一个包含撇号、括号和其他内容的 url 字符串

   string myUrl ="Http://XXXXX.net/Cust('10008')/AcctDetail

    string strUrl = System.Net.WebUtility.UrlEncode(myUrl);
    var client = new System.Net.Http.HttpClient();
    client.DefaultRequestHeaders.Accept.Clear();         
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", "swerefeqeaQw=");

    var response = await client.GetAsync(strUrl);            

    string status = response.StatusCode.ToString();


    Problem: at var response = await client.GetAsync(strUrl);  

System.InvalidOperationException: The request URI must either be an absolute URI or BaseAddress must be set

如何为 HttpClient 构建这样的 url 字符串?我正在使用 HttpClien 来使用 OData 网络服务,我发现 URL 要求是不同的。此 Httpclient 用于 Xamarin (Microsoft cross platform for Mobile)

谢谢

【问题讨论】:

不工作?它以什么方式不起作用?你现在应该知道如何写出更好的问题了。 你的前端也是围绕什么构建的? MVC? MVC 核心? WCF?只是普通的 WinForms? 该代码看起来甚至无法编译。 URL 字符串缺少右引号,其中三行缺少分号... 以上代码可以编译,请显示工作代码和异常。 @all,我已经更新了我的代码和错误信息。 【参考方案1】:

如果服务器是标准 REST,那么 URL 可能应该是

string myUrl = "http://XXXXX.net/Cust/10008/AcctDetail";

【讨论】:

当我们甚至不知道问题出在哪里时,你怎么可能猜到这是答案?另外,请使用正确的代码格式,三次反引号不是 Stack Overflow 上的正确格式。 @DavidG 这只是帮助 OP 的一个猜测,对于反勾号感到抱歉,整天都在写 markdown 文档, 那么猜测可能最好作为评论。 注意perhaps的使用。让我们尝试帮助 OP,而不是自相矛盾, 哈哈,“也许”这个词使它成为评论而不是答案:)

以上是关于如何为 HttpClient 建立合法的 URL的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何为 dnx451 和 dnxcore50 引用 HttpClient?

如何为我的 HttpClient PostAsync 第二个参数设置 HttpContent?

如何为构造函数包含 HttpClient 和一些字符串的类设置一些 .NET Core 依赖注入?

如何为HttpClient(WinForms)设置默认的json序列化设置

如何为每个 url 使用 Polly 和 IHttpClientFactory

如何为名称中带有“ - ”(连字符)的工件添加“要求”