我正在尝试创建一个 windows phone 应用程序,通过 webclient 使用 api 从服务器获取数据。它必须进行2个步骤:
- 使用公钥发送第一个请求以与服务器进行验证。响应包含消息,如果“有效密钥”,则会话在 15 分钟内创建。
{"code":200,"content":null,"message":"Valid key"}或 {"code":401,"content":null,"message":"Invalid key"}。
- 接下来,在收到“Valid key”消息后,将发送第二个请求以获取数据。
API 可在 PC 上的 Web 浏览器中正常工作
{ 代码:200,内容:空,消息:“有效密钥”}
{
code: 200,
content: {
topics: [
{
absViewUrl: "http://www.depvd.com/view/Chan-Dai-Xu-Han-Xinh-Ghe/TLcfZPtUUe",
absWidgetImage: "http://photo.depvd.com/13/317/08/ph_o1SJotZgie_OIusQYb2_wi.jpg",
commentsCount: 0,
likeCount: 0,
models: [
{
absModelUrl: "http://www.depvd.com/model/Choi-Byeol-Yee/2sj1OYbIsN",
name: "Choi Byeol Yee"
}
],
photos: [
{
absNormal: "http://photo.depvd.com/13/317/08/ph_o1SJotZgie_OIusQYb2_no.jpg"
}
],
title: "Chân dài xứ Hàn xinh ghê",
user: {
absUserUrl: "http://www.depvd.com/user/Takei-Emi/o1SJotZgie",
displayName: "Takei Emi"
},
viewCount: 17
},
但是当我在代码中使用 webclient 发送第二个请求时,总是响应消息“访问被拒绝”
public void GetAlbum(int page)
{
string url = "http://open-api.depvd.com/Topic/GetNewTopics?page=1";
WebClient webClient = new WebClient();
webClient.Headers["Accept"] = "application/json";
webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(AlbumDownloaded);
webClient.DownloadStringAsync(new Uri(url, UriKind.RelativeOrAbsolute));
}
{"code":401,"content":null,"message":"拒绝访问"}
可能是windows phone 中的webclient 在第一次请求后没有保存seesion/cookies。