从IClo​​ud API获取联系人列表

时间:2018-08-01 09:04:18

标签: c# httpwebrequest icloud

请求ICloud API并使用以下URL登录

string url = "https://setup.icloud.com/setup/ws/1/login?clientBuildNumber=1P24&clientId=" + RANDOM_GUID;

从上述url响应中获取服务器url和dsid。 使用以下代码进一步请求联系人列表

var localUrl2 = "https://p66-contactsws.icloud.com/co/startup?clientBuildNumber=1P24&clientId=" + RANDOM_GUID + "&clientVersion=2.1&dsid=" + dsid + "&locale=en-EN&order=last%2Cfirst";
var webRequest2 = (HttpWebRequest)WebRequest.Create(localUrl2);
webRequest2.Method = "GET";
webRequest2.Headers.Set("Origin", "https://www.icloud.com");
// get the X-APPLE-WEBAUTH-TOKEN and X-APPLE-WEBAUTH-USER from  webResponse.Headers.SetCookie
webRequest2.Headers.Set("X-APPLE-WEBAUTH-TOKEN",  XXXXXXX);
webRequest2.Headers.Set("X-APPLE-WEBAUTH-USER",  XXXXXXXX);

WebResponse webResponse2 = webRequest2.GetResponse();

仍然出现异常

  

远程服务器返回错误:(421)错误的请求。

请让我知道上面的代码出了什么问题。

1 个答案:

答案 0 :(得分:1)

如评论中所述,Apple已采取了您尝试离线的终点,因此出现421错误。您可以探索另一种方法来完成here