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

用C#进行json调用

阙庆
2023-03-14
问题内容

我正在尝试使用C#进行json调用。我在创建呼叫时遇到了麻烦,但没有成功:

public bool SendAnSMSMessage(string message)
{
    HttpWebRequest request = (HttpWebRequest)
                             WebRequest.Create("http://api.pennysms.com/jsonrpc");
    request.Method = "POST";
    request.ContentType = "application/json";

    string json = "{ \"method\": \"send\", "+
                  "  \"params\": [ "+
                  "             \"IPutAGuidHere\", "+
                  "             \"msg@MyCompany.com\", "+
                  "             \"MyTenDigitNumberWasHere\", "+
                  "             \""+message+"\" " +
                  "             ] "+
                  "}";

    StreamWriter writer = new StreamWriter(request.GetRequestStream());
    writer.Write(json);
    writer.Close();

    return true;
}

任何有关如何使这项工作的建议,将不胜感激。


问题答案:

在您的代码中,您不会获得HttpResponse,因此您将看不到服务器端将您发回的内容。

您需要获得与获取(发出)请求类似的响应。所以

public static bool SendAnSMSMessage(string message)
{
  var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://api.pennysms.com/jsonrpc");
  httpWebRequest.ContentType = "text/json";
  httpWebRequest.Method = "POST";

  using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
  {
    string json = "{ \"method\": \"send\", " +
                      "  \"params\": [ " +
                      "             \"IPutAGuidHere\", " +
                      "             \"msg@MyCompany.com\", " +
                      "             \"MyTenDigitNumberWasHere\", " +
                      "             \"" + message + "\" " +
                      "             ] " +
                      "}";

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

我在pennysms文档中还注意到,他们期望内容类型为“ text / json”,而不是“ application /
json”。这可能没有什么区别,但是如果它不起作用,则值得尝试。



 类似资料:
  • 问题内容: 我正在查看以下API: http://wiki.github.com/soundcloud/api/oembed- api 他们举的例子是 呼叫: 响应: 我该怎么做才能仅通过URL获得此JSON对象? 问题答案: 看来他们为format参数提供了一个选项,它将返回JSONP。您可以像这样检索JSONP:

  • 问题内容: 我想从我的C ++程序中调用python脚本文件。 我不确定要分发给的人是否会安装python。 基本上,我正在寻找一个可以使用的具有Apache类似发行许可证的.lib文件。 问题答案: Boost有一个python接口库可以为您提供帮助。 Boost.Python

  • 问题内容: 从python模块中,我正在调用 Hello World 可执行文件,该文件仅打印到stdout。我对将输出重定向到python并遇到这个答案很感兴趣,这几乎将我带到了解决方案中。 此答案的关键部分是以下代码段: 我也想恢复重定向之前的标准输出。 问题 上面的函数到底发生了什么? 是什么和做什么? 什么啊 8号线在做什么?() 如何将标准输出存储在对象中? 调用 Hello World

  • 问题内容: 我是Visual Studio用户,习惯于调试断点。我现在在Linux环境中工作,并且正在使用Eclipse作为IDE。我是linux和eclipse的新手。我不知道如何在Eclipse中使用gdb。我尝试在命令行中使用gdb,但它并不像拥有UI那样容易。 如何在Eclipse中使用gdb? 问题答案: 以下说明适用于Eclipse 3.5(Galileo)。对于3.6(Helios)

  • 问题内容: 如何在C#中解码JSON响应? 问题答案: 签出DataContractJsonSerializer。您必须以.NET 3.5为目标,这意味着非常需要Visual Studio 2008。 这是一篇有关使用Json数据协定序列化程序的不错的博客文章。

  • 问题内容: 我在处理JNA中的回调时遇到问题。 我正在尝试使用C API,该API使用回调来处理多个会话事件(登录,注销,连接问题…)。 会话对象(称为)是不透明的结构。所有回调均在结构中注册。根据API,我应该声明回调对象,并将其放入创建对象时将提供的Config对象中。如果我不想使用某些回调,则应该使用对其进行初始化。API正在使用调用约定。 这是与我的问题有关的C标头的代码段: 这是我等效的