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'。 –