首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用C# HttpWebRequest将json发送到web服务

使用C# HttpWebRequest将json发送到web服务
EN

Stack Overflow用户
提问于 2013-12-11 12:20:47
回答 1查看 104.2K关注 0票数 19

我是JSON新手,需要帮助。我有一些JSON在jquery中工作,并从我在web上运行的web服务中正确地返回信息。但是,我无法在C#中使用HttpWebRequest让它工作。我将发布下面的代码。

代码语言:javascript
复制
/// <summary>
/// Summary description for VBRService
/// </summary>
[WebService(Namespace = "http://test.visitblueridge.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]
public class VBRService : System.Web.Services.WebService
{
    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string callJson(string x)
    {
        return "Worked =" + x;
    }
}

在web服务上,我希望能够使用以下代码调用"callJson(string x)“,

代码语言:javascript
复制
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = "{\"x\":\"true\"}";

            streamWriter.Write(json);
            streamWriter.Flush();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            return result;
        }

我一直收到一个内部服务器错误。当我将type更改为application/json并添加时,

代码语言:javascript
复制
request.Headers.Add("SOAPAction", "http://test.visitblueridge.com/callJson");

我收到一个不可接受的媒体错误。

提前感谢您,希望这对其他人有所帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-11 13:11:55

首先,您错过了要添加到webservice中的ScriptService属性。

ScriptService

然后尝试下面的方法通过JSON调用webservice。

var webAddr = "http://Domain/VBRService.asmx/callJson"; var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr); httpWebRequest.ContentType = "application/json; charset=utf-8"; httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = "{\"x\":\"true\"}"; streamWriter.Write(json); streamWriter.Flush(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); return result; }

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20510437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档