gpt4 book ai didi

c# - Xamarin Android 客户端将 JSON 发布到 Node JS Web 服务

转载 作者:行者123 更新时间:2023-11-30 00:42:19 26 4
gpt4 key购买 nike

我在使用 Xamarin Android (MvvmCross) 从我用 C# 编写的 Android 应用程序发送 JSON 数据时遇到问题。

Android应用程序中的函数可以正常运行;但是,我的 Web 服务(使用 ExpressNode JS 中编写)似乎没有检测到其端点上的发布请求。请注意,使用 get(将数据从 Web 服务发送到 Android 应用程序)的其他端点工作正常。

下面是我将数据发布到我的网络服务的函数

public async Task<int> insertSales(IEnumerable<Models.SalesTable> newsales)
{
/*ServerDatabaseApi.insertSalesEndpoint = "http://" + ipAddress + ":" + port +
"/insertsales";*/
WebRequest request = WebRequest.CreateHttp(ServerDatabaseApi.insertSalesEndpoint);
request.Method = "POST";
request.ContentType = "application/json";
try
{
using (var streamwriter = new StreamWriter(await request.GetRequestStreamAsync()))
{
string json = JsonConvert.SerializeObject(newsales, Formatting.Indented);
streamwriter.Write(json);
streamwriter.Flush();
}
return 1;
}
catch (WebException we)
{
return 0;
}
}

运行上面的函数时,总是成功的(return 1;总是执行)。我还尝试检查 JSON 序列化,它工作得很好。

下面还附上了用于提供数据的端点代码。

/*endpoint for inserting a new sales to sales table*/
app.post('/insertsales', function(appReq, appRes){
console.log("Insert sales; count : "+ appReq.body.length);
sql.connect(conn).then(function(){
console.log("Insert sales; count : "+ appReq.body.length);
for (var i = 0 ; i < appReq.body.length ; i++) {
new sql.Request()
.query("insert into SalesTable " +
"values ('"+appReq.body[i].DocumentNo+"','"+appReq.body[i].DateCreated+"','"+appReq.body[i].Location+"',"+
appReq.body[i].TotalDiscountAmount+","+appReq.body[i].Total+",'"+appReq.body[i].SalesmanId+"','"+
appReq.body[i].CustomerId+"',"+appReq.body[i].Latitude+","+appReq.body[i].Longitude+")")
.catch(function(err){
console.log(err);
});
}
}).catch(function(err){
console.log(err);
});
});

我尝试使用 console.log 来跟踪它是否到达了端点。但是,它永远不会执行。

你能帮我找出我哪里出错了吗?提前致谢。

最佳答案

您的 .NET 代码中没有任何内容会实际发送 WebRequest。您创建请求,将一些 JSON 写入它的流,然后刷新它。这是进行网络调用的简单方法(未经测试):

 public async Task<int> InsertSales(IEnumerable<Models.SalesTable> newSales)
{
var ipAddress = "";// your IP address here
var port = ""; // your port here
var endpoint = $"http://{ipAddress}:{port}/insertsalesline";
var requestString = JsonConvert.SerializeObject(newSales);
var content = new StringContent(requestString, Encoding.UTF8, "application/json");

using (var client = new HttpClient())
{
var reponse = await client.PostAsync(endpoint, content);
if (reponse.IsSuccessStatusCode)
return 1;
else
return 0;
}
}

关于c# - Xamarin Android 客户端将 JSON 发布到 Node JS Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42359859/

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