webentwicklung-frage-antwort-db.com.de

Verwenden Sie C # HttpWebRequest, um JSON an den Webdienst zu senden

Ich bin neu bei JSON und brauche Hilfe. Ich habe JSON, das in jquery arbeitet, und erhalte die Informationen korrekt von dem Webdienst zurück, den ich im Web ausgeführt habe. Ich kann es jedoch nicht mit HttpWebRequest in C # zum Laufen bringen. Ich werde den Code unten posten.

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

Das ist im Web-Service und ich möchte in der Lage sein, "callJson (string x)" mit diesem Code aufzurufen,

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

Ich erhalte immer wieder einen internen Serverfehler. Wenn ich den Typ in application/json ändere und hinzufüge,

request.Headers.Add("SOAPAction", "http://test.visitblueridge.com/callJson");

Ich erhalte einen nicht akzeptierten Medienfehler.

Vielen Dank im Voraus und hoffe, dass dies anderen hilft.

19
user3003510

Zuallererst haben Sie das ScriptService-Attribut zum Hinzufügen im Webservice verpasst.

[ScriptService]

Versuchen Sie anschließend die folgende Methode, um den Webservice über JSON aufzurufen.

        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
PratikP24