يصل Windows Phone 7 إلى Azure Mobile Service (أرجع الخادم البعيد خطأً:غير معثور عليه)
-
13-12-2019 - |
سؤال
أحاول إنشاء خدمة الهاتف المحمول الجديدة من Azure ، وقد تعرضت JSON البيانات بشكل صحيح.
https://lifehope.azure-mobile.net/tables/USERPF
USERPF هو جدول عينة.
من أجل تبسيط السؤال، قمت للتو بتعديل الإذن إلى "الجميع".
المشكلة هي أن الكود المذكور أدناه لا يعمل.رسالة الخطأ هي: أرجع الخادم البعيد خطأً:غير معثور عليهعندما قمت بالضغط على الزر "إدراج" لإدراج سجل جديد في USERPF...
private void butInsert_Click(object sender, RoutedEventArgs e)
{
USERPF item = new USERPF();
item.Column1 = 789;
item.Column2 = 789;
WebClient wc = new WebClient();
wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
//wc.Headers["X-ZUMO-APPLICATION"] = "";
wc.UploadStringCompleted += (ss, arg) =>
{
if (arg.Error == null)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show(arg.Error.Message);
}
};
wc.UploadStringAsync(
new Uri("https://lifehope.azure-mobile.net/tables/USERPF/"),
"POST", JsonHelper.ObjectToJson(item, typeof(USERPF)));
}
//USERPF.cs
public class USERPF
{
[System.Runtime.Serialization.IgnoreDataMember()]
public int id { get; set; }
[System.Runtime.Serialization.DataMember()]
public int Column1 { get; set; }
[System.Runtime.Serialization.DataMember()]
public int Column2 { get; set; }
}
//JsonHelper.cs
public static string ObjectToJson(object obj, Type type)
{
try
{
//Create a stream to serialize the object to.
MemoryStream ms = new MemoryStream();
// Serializer the User object to the stream.
DataContractJsonSerializer ser = new DataContractJsonSerializer(type);
ser.WriteObject(ms, obj);
byte[] json = ms.ToArray();
ms.Close();
return Encoding.UTF8.GetString(json, 0, json.Length);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return string.Empty;
}
}
المحلول
أنت ترسل بيانات JSON، لكنك تقول إنها من نوع محتوى مختلف:
wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
قم بتعيين نوع المحتوى الصحيح في الطلب:
wc.Headers["Content-Type"] = "application/json";
شيء لا علاقة له:إذا لم يكن النوع الخاص بك مزخرفًا [DataContract]
, ، لا تحتاج إلى تزيين الخصائص Column1 وColumn2 بها [DataMember]
.
نصائح أخرى
حاول أن يلقي arg.Erro
ص ل WebException
, ، وتحقق من رمز Statuce.قد يكون 401 (غير مصرح به)
var webException = arg.Error as WebException;
if(webException == null) return;
if (webException.Response != null)
{
var response = (HttpWebResponse)webException.Response;
var status = response.StatusCode; //press F9 here
}
لا تنتمي إلى StackOverflow