Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin Android客户端将JSON发布到节点JS web服务_C#_Android_Node.js_Xamarin_Mvvmcross - Fatal编程技术网

C# Xamarin Android客户端将JSON发布到节点JS web服务

C# Xamarin Android客户端将JSON发布到节点JS web服务,c#,android,node.js,xamarin,mvvmcross,C#,Android,Node.js,Xamarin,Mvvmcross,我在使用Xamarin Android(MvvmCross)从我的Android应用程序发送JSON数据时遇到问题 Android应用程序中的功能可以正常运行;但是,我的web服务(使用Express在Node JS中编写)似乎没有在其端点上检测到post请求。请注意,使用get(将数据从web服务发送到Android应用程序)的其他端点工作正常 下面是我将数据发布到web服务的功能 public async Task<int> insertSales(IEnumerable<

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

Android应用程序中的功能可以正常运行;但是,我的web服务(使用
Express
Node JS
中编写)似乎没有在其端点上检测到post请求。请注意,使用
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;
        }
    }
我尝试使用
console.log
跟踪它是否到达端点。然而,它从不执行


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

您的.NET代码中没有实际发送
WebRequest的内容。您创建请求,向其流中写入一些JSON,然后刷新它。以下是进行网络呼叫的简单方法(未经测试):

public异步任务InsertSales(IEnumerable newSales)
{
var ipAddress=“;//此处是您的IP地址
var port=”“;//此处是您的端口
var endpoint=$“http://{ipAddress}:{port}/insertsalesline”;
var requestString=JsonConvert.SerializeObject(newSales);
var content=newstringcontent(requestString,Encoding.UTF8,“application/json”);
使用(var client=new HttpClient())
{
var reponse=wait client.PostAsync(端点、内容);
if(响应.发布成功状态代码)
返回1;
其他的
返回0;
}
}

你好,卢克,谢谢你的帮助和解释!根据答案,起初我以为
.Flush
已经在发送
WebRequest
/*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);
    });
});
 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;
     }
 }