Следующий код работает в редакторе и на Android, но когда создав его для WP8, я получаю следующую ошибку.
System.Byte[] System.Net.WebClient::UploadData(System.String,System.String,System.Byte[]) ` не существует в целевой платформе.
Причина этой ошибки объясняется здесь
Это потому, что Windows Phone 8 использует другой вариант .NET, называемый .NET для Windows Phone, в котором отсутствуют некоторые типы, доступные на других платформах. Вам придется либо заменить эти типы другими, либо реализовать их самостоятельно.
— http://docs.unity3d.com/Manual/wp8-faq.html
Это мой код< /p>
Код: Выделить всё
using (WebClient client = new WebClient())
{
client.Encoding = System.Text.Encoding.UTF8;
client.Headers[HttpRequestHeader.ContentType] = "application/json";
byte[] requestData = new byte[0];
string jsonRequest = "{}";
if (data != null)
{
string tempRequest = Converter.SerializeToString (data);
jsonRequest = "{\"Data\": \"" + tempRequest + "\"}";
requestData = System.Text.Encoding.UTF8.GetBytes(jsonRequest);
}
// below line of code is the culprit
byte[] returnedData = client.UploadData(url, "POST", requestData);
if(returnedData.Length > 0)
{
// do stuff
}
}
Итак, как мне опубликовать данные в Unity без использования WWW на Windows Phone 8?
< strong>ОБНОВЛЕНИЕ ПО ЗАПРОСУ НА КОММЕНТАРИЙ — WebRequests
Этот код с использованием HttpWebRequest работает в редакторе и на Android, но на Windows Phone выдает ошибки, перечисленные ниже код.
Код: Выделить всё
var request = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "POST";
var sw = new System.IO.StreamWriter(request.GetRequestStream(), System.Text.Encoding.UTF8);
sw.Write(jsonRequest); // jsonRequest is same variable as in above code, string with json object.
sw.Close();
var re = request.GetResponse();
string resultString = "";
using (var outputStream = new System.IO.StreamReader(re.GetResponseStream(), System.Text.Encoding.UTF8))
{
resultString = outputStream.ReadToEnd();
}
if(resultString.Length > 0)
{}
Ошибка: метод System.IO.Stream System. Net.HttpWebRequest::GetRequestStream() не существует в целевой платформе.
Ошибка 2:
Код: Выделить всё
System.Net.WebResponse System.Net.HttpWebRequest::GetResponse()
ОБНОВИТЬ С БОЛЕЕ ПОДРОБНОЙ ИНФОРМацией – UploadStringAsync
Используя этот код для выполнения асинхронного запроса, он снова отлично работает в редакторе, в WP8 выдаются ошибки.
Код: Выделить всё
bool isCompleted = false;
byte[] returnedData = null;
client.UploadDataCompleted +=
new UploadDataCompletedEventHandler((object sender, UploadDataCompletedEventArgs e) =>
{
Debug.Log("return event");
returnedData = e.Result;
isCompleted =true;
});
Debug.Log("async call start");
client.UploadDataAsync(new Uri(url), requestData);
while(isCompleted == false){
Thread.Sleep(100);
}
if(returnedData.Length > 0)
{}
метод System.Void System.Net.WebClient:: add_UploadDataCompleted(System.Net.UploadDataCompletedEventHandler) не существует в целевой платформе.
Ошибка 2
Ошибка: метод System.Void System.Net.WebClient::UploadDataAsync(System.Uri,System.Byte[]) не существует в целевой платформе.
Ошибка 3
Ошибка: тип System.Net.UploadDataCompletedEventArgs не существует в целевой платформе.
Ошибка 4
Ошибка: метод System.Byte[] System.Net.UploadDataCompletedEventArgs::get_Result() не существует в целевой платформе.
Подробнее здесь: https://stackoverflow.com/questions/310 ... ws-phone-8