当前位置: 首页 > 面试题库 >

在C#中将值传递给PUT JSON请求

梅修贤
2023-03-14
问题内容

我正在使用API​​,并尝试在C#中执行JSON PUT请求。这是我正在使用的代码:

    public static bool SendAnSMSMessage()
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://apiURL");
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "PUT";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = **// Need to put data here to pass to the API.**

            streamWriter.Write(json);
        }
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var responseText = streamReader.ReadToEnd();
            //Now you have your response.
            //or false depending on information in the response
            return true;
        }
    }

问题是我不知道如何将数据传递给API。因此,就像在JavaScript中一样,我将执行以下操作来传递数据:

        type: 'PUT',
        data: { 'reg_FirstName': 'Bob',
                'reg_LastName': 'The Guy',
                'reg_Phone': '123-342-1211',
                'reg_Email': 'someemail@emai.com',
                'reg_Company': 'None',
                'reg_Address1': 'Some place Dr',
                'reg_Address2': '',
                'reg_City': 'Mars',
                'reg_State': 'GA',
                'reg_Zip': '12121',
                'reg_Country': 'United States'

我将如何在C#中执行相同的操作?谢谢!


问题答案:
httpWebRequest.ContentType = "text/json";

绝对应该是:

httpWebRequest.ContentType = "application/json";

除此之外,您的当前代码没有任何问题。

至于JSON生成部分,您可以使用JSON序列化器:

var serializer = new JavaScriptSerializer();

string json = serializer.Serialize(new 
{
    reg_FirstName = "Bob",
    reg_LastName = "The Guy",
    ... and so on of course
});

在此示例中,我显然使用了一个匿名对象,但是您可以完美地定义一个属性匹配的模型,然后将该模型的实例传递给该Serialize方法。您可能还想签出Json.NET库,它是第三方JSON序列化程序,它比内置的.NET更轻巧,更快捷。

但总而言之,您可能还听说过ASP.NET Web API以及即将推出的.NET
4.5。如果这样做了,您应该意识到将有一个HttpClient专门为这些需求量身定制的API HTTP
Web客户端()。WebRequest在几个月内,使用来使用启用了JSON的API会被视为过时的代码。我之所以这样说是因为您可以立即使用NuGet来使用此新客户端,并简化可怜的灵魂的生活(任务是将代码迁移到.NET
XX),该工作将在几年后甚至可能在您的代码中进行。甚至不知道什么WebRequest是:-)




 类似资料:
  • 我一直试图从一个对象数组填充一个JTable,但是什么也没有显示出来。下面是填充表的方法代码。system.out.println使我能够检查数据是否正确传递,变量中是否有值。这是来自界面的: 即使来自接口的数据显示在控制台中,也只显示表头。如果有人能解决如何正确地将数据值传递给JTable,那就太棒了!

  • 问题内容: 我有一个C函数声明如下: 如今,我的cython包装器代码使用了numpy数组中的缓冲区语法: 我想使用新的memoryview语法,我的问题是,使用memoryview时如何将指针传递给数据? 我试过了: 当我尝试编译模块时,出现了“无法将类型’long [:]’分配给’long *’”的错误。有没有什么方法可以在调用C函数之前将指针传递给numpy数组而不将其强制转换为numpy数

  • 问题内容: 谁能告诉我如何在JSP中将JavaScript值传递给Scriptlet? 问题答案: 您的javascript值是客户端,您的scriptlet正在服务器端运行。因此,如果您想在scriptlet中使用javascript变量,则需要提交它们。 为此,可以将它们存储在输入字段中并提交表单,或者执行ajax请求。我建议您对此进行研究。

  • 我需要你的帮助,在这个特殊的问题上,我想传递一个隐藏输入类型的值。jsp程序到servlet程序 我现在做的基本上是这样的 从servlet中我得到了值 它没有打印任何想法。jsp表单方法是post,servlet方法是doPost 有什么想法为什么它不传递参数吗?

  • 问题内容: 我想将数组作为Ajax请求发送: 我怎样才能做到这一点? 问题答案: info = []; info[0] = ‘hi’; info[1] = ‘hello’;

  • 嗨,我在SOAP请求中传递resourcekey的null值,如下所示。 此请求的示例WSDL文件如下所示: 提前谢了。