当代码调取错误的时候
1.检查接口调用实例是否漏多
2.对比浏览器的报文信息
public class test : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(string id)
{
//Get();
Thumbs OutData = GetPicture(id);
return OutData.url3;
}
public static Thumbs GetPicture(string name)
{
//Get();
string dir = "/大学相册/";
string access_token = "xxxxxxxxxx";//获取token密令
string key = name;
string url = "https://pan.baidu.com/rest/2.0/xpan/file?";
StringBuilder sb = new StringBuilder();
sb.Append("dir=" + dir);
sb.Append("&method=" + "search");
sb.Append("&access_token=" + access_token);
sb.Append("&key=" + key);
sb.Append("&web=" +"1");
string sInparam = sb.ToString();
string code = "";
GetSearch OutData = null;
try
{
code = HttpPost(url + sInparam);
OutData = new GetSearch();
}
catch
{
return null;
}
OutData = JsonConvert.DeserializeObject<GetSearch>(code);
if (OutData.list.Count <= 0)
{
return null;
}
return OutData.list[0].thumbs;
}
public static string HttpPost(string url)
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "Get";
request.ContentType = "application/x-www-form-urlencoded";
//byte[] buffer = encoding.GetBytes(body);
request.Host = "pan.baidu.com";
//request.ContentLength = buffer.Length;
//当时测试的时候由于没有Cookies在代码连接平台的时候会报平台连接错误,Get在浏览器上直接请求回报连接错误,我感觉原因:该浏览器没有登录百度网盘账号导致登录不上去,当我登录百度网盘账号后再次Get请求就能拿到返回值,然后我拿到Cookies报文信息,粘贴到代码中获取服务器成功,
request.Headers.Add("Cookie", "xxxxxxxxx");
//request.GetRequestStream().Write(buffer, 0, buffer.Length);
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
catch (Exception ex)
{
throw new Exception("false");
}
}
}