У меня возникли проблемы с отправкой JSON
данных из моего приложения для Android, написанного на C#
с использованием Xamarin Android (MvvmCross
).Почтовый клиент Xamarin для Android JSON для узла JS веб-службы
Функция в приложении Android может работать без каких-либо исключений; однако мой веб-сервис (написанный в Node JS
с использованием Express
), кажется, не обнаруживает почтовый запрос на его конечной точке. Обратите внимание, что другие конечные точки, которые используют get
(для отправки данных из веб-службы в приложение для 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
. Однако он никогда не выполняется.
Не могли бы вы помочь мне определить, где я ошибся? Заранее спасибо.
Привет, Люк, спасибо за помощь и объяснение! На основании http://stackoverflow.com/a/10027534/5023889 ответ сначала я подумал: '.Flush' уже отправляет' WebRequest'. –