C# Can';无法更新Appcelerator云服务中的自定义对象,出现错误:(401)未经授权
我正在开发一个连接到Appcelerator云服务的C#应用程序,目前为止我可以进行查询和登录,但是当我尝试更新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
自定义对象时,我遇到了以下错误:远程服务器返回了一个错误:(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”代表访问控制服务。你可能想在标题中详细说明,至少可以得到更多的答案。你是对的,谢谢你的建议。