【发布时间】:2014-10-16 10:30:48
【问题描述】:
我有以下使用 OAuth 上传的代码。
public async Task UploadPhotoContinueAsync(IEnumerable<StorageFile> files)
{
var uri = string.Format("https://api.500px.com/v1/photos/upload?name={0}&description={1}&privacy=0&category=0", "test name", "test description");
var backgroudUploader = new BackgroundUploader();
var headers = OAuthUtility.BuildBasicParameters(consumerKey, consumerSecret, uri, HttpMethod.Post, GetAccessToken());
var header = string.Empty;
var file = files.First();
foreach (var item in headers)
{
header += string.Format(@"{0}=""{1}"",", item.Key, item.Value);
}
header = header.Remove(header.Length - 1);
backgroudUploader.SetRequestHeader("Authorization", string.Format("OAuth {0}", header));
backgroudUploader.SetRequestHeader("Filename", file.Name);
var op = backgroudUploader.CreateUpload(new Uri(uri), file);
try
{
var result = await op.StartAsync();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
问题是每次我开始操作时,我都会从 API 收到内部服务器错误。
我似乎无法弄清楚问题所在。
有人发现了吗?谢谢。
编辑:
我终于让 Fiddler 工作了。以下是应用发送到 API 的标头:
【问题讨论】:
-
您收到的错误中有任何消息吗?如果该位置上已经存在文件名“test”,是否会导致问题?
-
不幸的是,我看不到响应中嵌入了什么消息。至少,我不知道在使用 UploadOperation 时如何查看它。它只是状态码 500 和内部服务器错误。此外,我还使用他们的测试控制台 API 上传了多个“测试”命名图像。
-
如果您安装了 Fiddler,您应该能够准确地看到正在发生的事情和正在发生的事情。
-
问题是 Fiddler 不工作。我试过了:(
-
确保为 Fiddler for Win8 进行了配置。此外,您可以尝试手动创建相同的请求(在 Fiddler 中手动设置标头)并查看响应内容。你在发出请求之前检查过请求吗?确保您的 OAuth 令牌被正确解析,等等。
标签: c# windows-runtime windows-phone-8.1 winrt-async