http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3725|回复: 3

[其他] C#往百度LBS云上传文件总是返回“百度-您的访问出错了”,求解

[复制链接]
发表于 2014-2-12 11:33:18 | 显示全部楼层 |阅读模式
本帖最后由 lzp1982cn 于 2014-2-12 11:39 编辑

函数原型
[C#] 纯文本查看 复制代码
 public string UploadCSVFile(string ak, string geotable_id, string filePath)
{
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
//请求 
WebRequest req = WebRequest.Create(@"http://api.map.baidu.com/geodata/v3/poi/upload");
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=" + boundary;
req.Proxy = WebRequest.GetSystemWebProxy();
//组织表单数据 
StringBuilder sb = new StringBuilder();
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"ak\"");
sb.Append("\r\n\r\n");
sb.Append(ak);
sb.Append("\r\n");
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"geotable_id\"");
sb.Append("\r\n\r\n");
sb.Append(geotable_id);
sb.Append("\r\n");
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"poi_list\"; filename=\"e:\\00000001.csv\"");
sb.Append("\r\n");
sb.Append("Content-Type: application/octet-stream");
sb.Append("\r\n\r\n");
string head = sb.ToString();
byte[] form_data = Encoding.UTF8.GetBytes(head);
//结尾 
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//文件 
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
//post总长度 
long length = form_data.Length + fileStream.Length + foot_data.Length;
req.ContentLength = length;
Stream requestStream = req.GetRequestStream();
//发送表单参数 
requestStream.Write(form_data, 0, form_data.Length);
//文件内容 
byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
requestStream.Write(buffer, 0, bytesRead);
//结尾 
requestStream.Write(foot_data, 0, foot_data.Length);
requestStream.Close();
string html = string.Empty;
WebResponse pos = null;
//响应 
try
{
pos = req.GetResponse();
StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.GetEncoding("gb2312"));
html = sr.ReadToEnd().Trim();//"百度-您的访问出错了."
sr.Close();
}
catch(Exception ex)
{
Console.WriteLine("GetResponse fail:" + ex.Message);
}
if (pos != null)
{
pos.Close();
pos = null;
}
if (req != null)
{
req = null;
}
return html;
}


函数调用

UploadCSVFile(myak, mygeotable_id.ToString(), "e:\\00000001.csv");
相同url、文件,利用GOOGLE浏览器的PostMan工具可以上传,不知道C#里面还需要什么设置吗?
在PostMan将url后面部分修改,也会返回“访问出错”提示,怀疑是url没转成功,但是为什么会错误没有头绪。





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-2-12 11:40:54 | 显示全部楼层
req.ContentType = "multipart/form-data; boundary=" + boundary;
sb.Append("Content-Type: application/octet-stream");重复了吧,
 楼主| 发表于 2014-2-12 13:59:59 | 显示全部楼层
站长苏飞 发表于 2014-2-12 11:40
req.ContentType = "multipart/form-data; boundary=" + boundary;
sb.Append("Content-Type: application ...

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="ak"

8tehoNrYghmpE9pF3NeerEbM
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="geotable_id"

49622
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="poi_list"; filename="00000001.csv"
Content-Type: application/vnd.ms-excel


----WebKitFormBoundaryE19zNvXGzXaLvS5C

上面的是PostMan的FormData内容
sb.Append("Content-Type: application/octet-stream"); 填的是FormData内容
两者应该不冲突吧?
我改改试试
 楼主| 发表于 2014-2-12 14:21:22 | 显示全部楼层
站长苏飞 发表于 2014-2-12 11:40
req.ContentType = "multipart/form-data; boundary=" + boundary;
sb.Append("Content-Type: application ...

不行
删除req.ContentType = "multipart/form-data; boundary=" + boundary;
或者改为req.ContentType = "application/octet-stream; boundary=" + boundary;
都不行,结果一样,都是访问出错
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-23 23:37

© 2014-2021

快速回复 返回顶部 返回列表