HttpWebRequest 与 HttpClient

2024-01-24

我有一段代码可以使用HttpWeb请求 and HttpWeb响应但我想将其转换为使用Http客户端 and Http响应消息.

这是有效的代码块......

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(serviceReq);

request.Method = "POST";
request.ContentType = "text/xml";
string xml = @"<?xml version=""1.0""?><root><login><user>flibble</user>" + 
    @"<pwd></pwd></login></root>";
request.ContentLength = xml.Length;
using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream()))
{
    dataStream.Write(xml);
    dataStream.Close();
}

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

这就是我想要替换的代码,只要我能让它工作就好了。

/// <summary>
/// Validate the user credentials held as member variables
/// </summary>
/// <returns>True if the user credentials are valid, else false</returns>
public bool ValidateUser()
{
    bool valid = false;

    try
    {
        // Create the XML to be passed as the request
        XElement root = BuildRequestXML("LOGON");

        // Add the action to the service address
        Uri serviceReq = new Uri(m_ServiceAddress + "?obj=LOGON");


        // Create the client for the request to be sent from
        using (HttpClient client = new HttpClient())
        {
            // Initalise a response object
            HttpResponseMessage response = null;

            // Create a content object for the request
            HttpContent content = HttpContentExtensions.
                CreateDataContract<XElement>(root);

            // Make the request and retrieve the response
            response = client.Post(serviceReq, content);

            // Throw an exception if the response is not a 200 level response
            response.EnsureStatusIsSuccessful();

            // Retrieve the content of the response for processing
            response.Content.LoadIntoBuffer();

            // TODO: parse the response string for the required data
            XElement retElement = response.Content.ReadAsXElement();
        }
    }
    catch (Exception ex)
    {
        Log.WriteLine(Category.Serious, 
            "Unable to validate the Credentials", ex);
        valid = false;
        m_uid = string.Empty;
    }

    return valid;
}

我认为问题在于创建内容对象并且 XML 未正确附加(也许)。


The HttpClient.Post方法有一个重载,需要一个contentType参数,试试这个:

// Make the request and retrieve the response
response = client.Post(serviceReq, "text/xml", content);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpWebRequest 与 HttpClient 的相关文章

随机推荐

  • 给定一个数字系列,找到校验位算法......?

    假设我有一系列索引号 其中包含检查数字 http en wikipedia org wiki Check digit 如果我有足够公平的样本 例如 250 个样本索引号 我是否有办法提取用于生成校验位的算法 我认为至少应该有一种编程方法来找
  • 塔式认证?

    有没有一种真正的方法可以在 Pylons 中添加身份验证 我见过很多不同的方法 但其中大多数要么过时 要么太复杂 是否有教程解释如何以良好而可靠的方式添加身份验证 Pylon的官方立场似乎是 我们不做身份验证 你可以插入任何你想要的身份验证
  • 平台不允许 Flutter Insecure http

    Flutter 团队最近进行了此更改 现在不允许不安全的 http 连接 https flutter dev docs release writing changes network policy ios android https flu
  • 使用“std”的标准约定

    精确重复 您更喜欢 C 中的显式命名空间还是 using https stackoverflow com questions 214927 do you prefer explicit namespaces or using in c 对于
  • PHP file_get_contents 在本地主机上不起作用

    我正在从 localhost http 172 16 65 1 上的 OSX 上的 MAMP 服务器上处理我的网站 我想从 Google 加载一些 JSON 一些简单的测试表明我在这里遇到了问题 echo file get contents
  • 使用 JAVA 8 Streams 从地图中仅创建 1 个列表,其中地图值是列表

    我有一个地图 其中 值 是项目列表 Map
  • 如何在MVVMCross WPF应用程序中实现关闭按钮?

    我在用MVVM交叉 in my WPF申请 我想提供一个Close or ExitGUI 中的 按钮可关闭整个应用程序 有没有一种简单的方法可以使用MVVM交叉功能 我用我的方法尝试了以下方法MainViewModel public cla
  • 在 Rust 中散列读者的正确方法?

    我试图使用双重哈希 https crates io crates twox hash为文件生成哈希 因为它似乎是最快的哈希实现 并且安全性不是此实现的问题 为了让它与读者一起工作 我实现了一个包装结构 它实现了Write特质并直接调用XxH
  • 在类中存在的标头内使用“导航”和“路线” - React-navigation v5

    我被困住了 因为我想切换到 React navigation 的 V5 版本 在 v4 中 我曾经传递参数并将它们与以下命令一起使用 Set this props navigation navigate MyDestination myPa
  • 在引导程序中禁用@media print?

    是否可以完全禁用任何预配置 media printcss样式来自bootstrap无需重新编译 默认应用的打印样式可以在这里看到 https github com twbs bootstrap blob master dist css bo
  • 工具提示控件如何通过新属性增强表单上的所有控件?

    在回答另一个问题时 我开始想知道如何向表单中的所有控件添加新属性 就像工具提示控件那样 例如 我可以使用它将 IsDirty 标志添加到所有文本框 只需将组件添加到表单中 它就会为每个文本框处理这个问题 将工具提示控件添加到表单时 所有控件
  • 浏览器关闭时如何唤醒服务人员

    我正在玩服务人员的东西 我已经做了它以及清单 json 我想在以下场景后触发服务工作人员启动 添加了推送集成并从服务器端发送推送通知 在客户端收到它 但前提是我在我的申请页面中 以下是我想要尝试启动 Service Worker 的步骤 我
  • 如何使用 qmake 处理两个同名的源文件?

    我的 Qt 项目有两个同名但位于不同文件夹中的源文件 专业文件是 SOURCES A Test cpp SOURCES B Test cpp 它可以通过 Qt Visual Studio 插件生成 Visual Studio 解决方案文件
  • github api 比较提交,响应状态存在分歧

    在配置jenkins时 我想检测feature分支是否存在合并冲突 所以我使用github api v3在2上进行测试故意的冲突的分支 将branch1合并到master后 我比较了branch2 b2 如下所示 curl i https
  • WS-Security php 中 PasswordDigest 的工作算法

    我一直根据航空公司供应商提供的公式创建哈希密码 我在这个网站上搜索过 我从下面的链接中得到了 C 的解决方案 但我想要 PHP 的解决方案 WS Security 中 PasswordDigest 的工作算法 https stackover
  • 了解 Objective-C 中强指针和弱指针的实际应用

    我刚刚阅读了已接受的优秀答案this https stackoverflow com questions 9262535 explanation of strong and weak storage in ios5这个问题澄清了 Objec
  • JavaScript 输入数字

    如何使用 window prompt 从用户处获取 2 个数字并将它们相加而不连接 我的想法是 var temp window prompt Number1 var temp2 window prompt Number2 var answe
  • 初始化列表和运算符的 RHS

    我不明白为什么初始化列表不能在运算符的 RHS 上使用 考虑 class foo struct bar template
  • javafx拉伸图像以填充按钮?

    我正在用 Java JavaFX 编写一个 星际迷航 游戏 我的想法是主游戏屏幕是一个 10x10 的按钮网格面板 所有游戏部件 企业 克林贡 行星等 都将在按钮中显示为图标 这样 您可以单击一个空间对象来选择它 扭曲到它 射击它等等 当然
  • HttpWebRequest 与 HttpClient

    我有一段代码可以使用HttpWeb请求 and HttpWeb响应但我想将其转换为使用Http客户端 and Http响应消息 这是有效的代码块 HttpWebRequest request HttpWebRequest HttpWebRe