马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

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

[复制链接]
查看3251 | 回复1 | 2014-2-12 15:06:29 | 显示全部楼层 |阅读模式
函数原型

[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");
//WebRequest req = WebRequest.Create(@"http://api.map.baidu.com/geodata/v2/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:\\databox_49612.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:\\databox_49612.csv");

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



ibcadmin | 2014-2-12 20:07:39 | 显示全部楼层
顶一下 未知
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则