1
我在使用Xamarin Android(MvvmCross
)从我的Android应用程序发送发送JSON
数据时遇到问题。Xamarin Android客户端发布JSON到节点JS web服务
Android应用程序中的函数可以毫无例外地运行;但是,我的Web服务(使用Express
编写的Node JS
)似乎未检测到其端点上的发布请求。请注意,使用get
(将Web服务中的数据发送到Android应用)的其他终端正在运行。
下面是我的功能,我的数据发布到我的web服务
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
来追踪它是否到达终点。但是,它从不执行。
你能帮我找出我出错的地方吗?提前致谢。
嗨卢克,感谢您的帮助和解释!基于http://stackoverflow.com/a/10027534/5023889答案,起初我以为'.Flush'已经发送了'WebRequest'。 –