Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# Can';无法更新Appcelerator云服务中的自定义对象,出现错误:(401)未经授权_C#_Rest_Post_Appcelerator - Fatal编程技术网

C# Can';无法更新Appcelerator云服务中的自定义对象,出现错误:(401)未经授权

C# Can';无法更新Appcelerator云服务中的自定义对象,出现错误:(401)未经授权,c#,rest,post,appcelerator,C#,Rest,Post,Appcelerator,我正在开发一个连接到Appcelerator云服务的C#应用程序,目前为止我可以进行查询和登录,但是当我尝试更新自定义对象时,我遇到了以下错误:远程服务器返回了一个错误:(401)未经授权。这是我的POST请求代码: url = "https://api.cloud.appcelerator.com/v1/objects/Reservacion/update.json?key=appkey&id=" + idReservacion + "&noDisponi

我正在开发一个连接到Appcelerator云服务的C#应用程序,目前为止我可以进行查询和登录,但是当我尝试更新
自定义对象时,我遇到了以下错误:
远程服务器返回了一个错误:(401)未经授权
。这是我的POST请求代码:

           url = "https://api.cloud.appcelerator.com/v1/objects/Reservacion/update.json?key=appkey&id=" + idReservacion + "&noDisponibles=" + noDisponibles;
            wrGetUrl = (HttpWebRequest)WebRequest.Create(url);
            wrGetUrl.Method = "POST";
            wrGetUrl.ContentType = "application/json";
            objStream = wrGetUrl.GetResponse().GetResponseStream(); // this is the line where the error is thrown
            reader = new StreamReader(objStream);
我有一个理论,它涉及到登录,在我的应用程序开始时,我进行了一次登录,返回ok状态,但我认为我需要在尝试更新
自定义对象时,通过发送会话id或类似的东西,以某种方式告知我已登录的ACS

编辑这就是我尝试在标题中添加cookie的原因,如下所示:

                url = "https://api.cloud.appcelerator.com/v1/objects/Reservacion/update.json?key=appkey&id=" + idReservacion + "&noDisponibles=" + noDisponibles;
                wrGetUrl = (HttpWebRequest)WebRequest.Create(url);
                wrGetUrl.Method = "POST";
                wrGetUrl.ContentType = "application/json";
                wrGetUrl.Headers.Add("Set-Cookie", "_session_id=" + session + "; path=/; HttpOnly");
                objStream = wrGetUrl.GetResponse().GetResponseStream(); // this is the line where the error is thrown
                reader = new StreamReader(objStream);
                String fields = "fields={\"noDisponibles\":" + noDisponibles +"}";

                String url = "https://api.cloud.appcelerator.com/v1/objects/Reservacion/update.json?key=appkey&id=" + idReservacion + "&_session_id="+session; 
                HttpWebRequest wrGetUrl = (HttpWebRequest)WebRequest.Create(url);

                wrGetUrl.Method = "PUT";
                wrGetUrl.ContentLength = fields.Length;
                wrGetUrl.ContentType = "application/x-www-form-urlencoded";

                Stream dataStream = wrGetUrl.GetRequestStream();
                byte[] byteArray = Encoding.ASCII.GetBytes(fields);
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();


                Stream objStream = wrGetUrl.GetResponse().GetResponseStream();
                StreamReader reader = new StreamReader(objStream);
其中
session
是我从成功登录中获得的会话id。但是,即使我在请求的标题中添加了这个,错误
,远程服务器返回了一个错误:(401)未经授权

编辑: 我试过别的方法:

                url = "https://api.cloud.appcelerator.com/v1/objects/Reservacion/update.json?key=appkey&id=" + idReservacion + "&noDisponibles=" + noDisponibles;
                wrGetUrl = (HttpWebRequest)WebRequest.Create(url);
                wrGetUrl.Method = "POST";
                wrGetUrl.ContentType = "application/json";
                wrGetUrl.Headers.Add("Cookie", session); //changed the header but it didn't work
                objStream = wrGetUrl.GetResponse().GetResponseStream(); // still throws the same error
                reader = new StreamReader(objStream);

我怎样才能解决这个问题?感谢您的帮助。

我这样解决了这个问题:

                url = "https://api.cloud.appcelerator.com/v1/objects/Reservacion/update.json?key=appkey&id=" + idReservacion + "&noDisponibles=" + noDisponibles;
                wrGetUrl = (HttpWebRequest)WebRequest.Create(url);
                wrGetUrl.Method = "POST";
                wrGetUrl.ContentType = "application/json";
                wrGetUrl.Headers.Add("Set-Cookie", "_session_id=" + session + "; path=/; HttpOnly");
                objStream = wrGetUrl.GetResponse().GetResponseStream(); // this is the line where the error is thrown
                reader = new StreamReader(objStream);
                String fields = "fields={\"noDisponibles\":" + noDisponibles +"}";

                String url = "https://api.cloud.appcelerator.com/v1/objects/Reservacion/update.json?key=appkey&id=" + idReservacion + "&_session_id="+session; 
                HttpWebRequest wrGetUrl = (HttpWebRequest)WebRequest.Create(url);

                wrGetUrl.Method = "PUT";
                wrGetUrl.ContentLength = fields.Length;
                wrGetUrl.ContentType = "application/x-www-form-urlencoded";

                Stream dataStream = wrGetUrl.GetRequestStream();
                byte[] byteArray = Encoding.ASCII.GetBytes(fields);
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();


                Stream objStream = wrGetUrl.GetResponse().GetResponseStream();
                StreamReader reader = new StreamReader(objStream);

我必须在HttpWebRequest的数据流中写入要更新的字段。希望这对未来的人们有所帮助。

我怀疑许多C#程序员会认为“ACS”代表访问控制服务。你可能想在标题中详细说明,至少可以得到更多的答案。你是对的,谢谢你的建议。