gpt4 book ai didi

servicestack - 从控制台应用程序到服务堆栈的 Json 格式数据

转载 作者:行者123 更新时间:2023-12-05 00:36:26 26 4
gpt4 key购买 nike

我发现你是唯一一个回答服务堆栈的人,我没有电子邮件,而且你向我提供的最后一个问题似乎很好。

我看过你的简介,因为你是mythZ的主要创始人,我好像又来问你我的问题了。

对于我的问题之一,将 JSON 格式的数据发送到服务堆栈,我感谢您的回答。
你的回答是对的,但就我而言,我有以下情况。让我更详细地描述一下。

我看过服务堆栈的“Hello World”示例。我有链接
https://github.com/ServiceStack/ServiceStack.Extras/blob/master/doc/UsageExamples/UsingRestAndJson.cs

就我而言,
我有调用服务堆栈的控制台应用程序(在数据库中插入数据)
现在,在该控制台应用程序中,我创建了一个类(class1),它位于具有相同属性的服务堆栈中。

我在控制台应用程序中为该类的属性赋值,并将整个对象发布到服务堆栈。语法如下

 JsonServiceClient client = new JsonServiceClient(myURL);
MYclass cls= MakeObjectForServiceStackToInsertData();
var res = client.Post<MYClass>("/postrequest", cls);

我已经使用 POST 如上所述。这似乎没问题。
在 OnPOST 事件中的服务堆栈结束时,我获取此数据并插入到数据库中。
它对我来说很好。

现在我的客户希望我们需要以任何格式传递数据。 JSON/XML。
我知道这是可能的,因为您向我提供了一个“Hello world”示例链接,它在那里被提及。

但我发现的是,他们使用 ajax/Jquery 将数据发布到服务。
就我而言,这是控制台应用程序,因此我无法使用 ajax/Jquery。
我想知道,是否可以以 JSON 格式传递数据并在我的情况下进行操作。

非常感谢您提前。

最佳答案

因此,如果您想发布任何无类型和自由文本 JSON XML 到 ServiceStack 那么你将无法使用 ServiceStack 的通用类型 C# 客户端(即它的 JsonServiceClient、XmlServiceClient 等)。相反,您只需要使用任何基本的 Http 客户端,例如 HttpWebRequest .NET 附带的。

正如我之前提到的,发送自由文本 json 或 xml 不是调用 ServiceStack Web 服务的正常方式(即,建议使用类型化 DTO 和通用服务客户端之一),但由于您在这里问的是立场 -单独、无依赖的调用示例 ServiceStack's Hello World网络服务示例:

发送自由文本 JSON

const string RemoteUrl = "http://www.servicestack.net/ServiceStack.Hello/servicestack/hello";

var httpReq = (HttpWebRequest)WebRequest.Create(RemoteUrl);
httpReq.Method = "POST";
httpReq.ContentType = httpReq.Accept = "application/json";

using (var stream = httpReq.GetRequestStream())
using (var sw = new StreamWriter(stream))
{
sw.Write("{\"Name\":\"World!\"}");
}

using (var response = httpReq.GetResponse())
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
Assert.That(reader.ReadToEnd(), Is.EqualTo("{\"Result\":\"Hello, World!\"}"));
}

发送自由文本 XML
var httpReq = (HttpWebRequest)WebRequest.Create(RemoteUrl);
httpReq.Method = "POST";
httpReq.ContentType = httpReq.Accept = "application/xml";

using (var stream = httpReq.GetRequestStream())
using (var sw = new StreamWriter(stream))
{
sw.Write("<Hello xmlns=\"http://schemas.servicestack.net/types\"><Name>World!</Name></Hello>");
}

using (var response = httpReq.GetResponse())
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
Assert.That(reader.ReadToEnd(), Is.EqualTo("<HelloResponse xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.servicestack.net/types\"><Result>Hello, World!</Result></HelloResponse>"));
}

我已将上述示例添加到此 Runnable Unit Test 中.

我建议您熟悉 HTTP 流量分析器工具,以便您可以轻松查看发送到您的 Web 服务和从您的 Web 服务接收的 HTTP 流量。从那时起,能够练习如何调用您的服务变得微不足道。一些很棒的 HTTP 流量分析器包括:
  • Fiddler
  • 浏览器中的网络检查器(例如 Chrome、Safari、Firefox 和 IE 有很棒的工具)
  • WireShark
  • 关于servicestack - 从控制台应用程序到服务堆栈的 Json 格式数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046538/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com