У меня есть этот код, который работает в консольном приложении Windows, но не работает в Windows Phone 7. Я уже написал приложение для Basecamp, в котором используется аналогичный код, но я думаю, что проблема связана с HTTPS FreshBooks. Я только что потратил несколько часов, пытаясь заставить его работать.
В основном строка с использованием var response = request.EndGetResponse(ar) as HttpWebResponse
выдает исключение:
Удаленный сервер вернул ошибку: NotFound.
Я могу успешно позвонить с помощью curl и использовать тот же код в консольном приложении. Итак, я знаю, что проблема не в моем токене API, учетной записи FreshBooks или формате xml!
private static void TestFreshbooks()
{
var url = "https://XXXXXX.freshbooks.com/api/2.1/xml-in";
HttpWebRequest request = CreateRequest(url);
request.BeginGetRequestStream(CreateRequestCallback,
new RequestState(null)
{
Request = request,
Callback = (args) =>
{
Debug.WriteLine(args);
},
});
}
private static void CreateRequestCallback(IAsyncResult ar)
{
var state = ar.AsyncState as RequestState;
var request = state.Request;
var xml = "<request method='client.list'></request>";
using (Stream stream = request.EndGetRequestStream(ar))
{
byte[] data = Encoding.UTF8.GetBytes(xml);// encoder.GetBytes(postData);
stream.Write(data, 0, data.Length);
}
request.BeginGetResponse(CreateResponseCallback, state);
}
private static void CreateResponseCallback(IAsyncResult ar)
{
try
{
var state = ar.AsyncState as RequestState;
var request = state.Request;
using (var response = request.EndGetResponse(ar) as HttpWebResponse)
{
using (var rs = response.GetResponseStream())
{
var sr = new StreamReader(rs);
var results = sr.ReadToEnd();
Debug.WriteLine(results);
}
}
}
catch (Exception e)
{
Debug.WriteLine(e);
}
}
private static HttpWebRequest CreateRequest(string url)
{
var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
var token = "XXXXXXX";
request.AllowAutoRedirect = false;
request.UserAgent = "freshwp7test";
request.Method = "POST";
request.Credentials = new NetworkCredential(token, "X");
return request;
}
1 ответ
Потратив несколько часов прошлой ночью на это. Я прикинул за 3 минуты этим утром. Удивительно, что может сделать с тобой немного сна.
Получается, что Fiddler ломал https-трафик и портил отладку. Мне пришлось закрыть скрипач и перезапустить эмулятор.
Спасибо.
Похожие вопросы
Новые вопросы
.net
НЕ используйте для вопросов о .NET Core - используйте вместо этого [.net-core]. .NET Framework - это программная среда, предназначенная главным образом для операционной системы Microsoft Windows. Он включает в себя реализацию библиотеки базовых классов, общеязыковой среды выполнения (обычно называемой CLR), общей системы типов (обычно называемой CTS) и динамической среды исполнения. Он поддерживает множество языков программирования, включая C #, VB.NET, F # и C ++ / CLI.