LBS云端数据删除和上传
2024-10-18 14:26:53
这里采用C#模拟表单提交,实现LBS云端删除和csv格式文件的上传。
删除:
/// <summary>
/// 从LBS云端删除数据
/// </summary>
/// <param name="ak">百度密钥</param>
/// <param name="geotable_id">LBS云geotableID</param>
/// <param name="columnName">字段名称</param>
/// <param name="columnValue">值(为空时则删除所有匹配的数据)</param>
/// <returns></returns>
public string DeleteByName(string ak, string geotable_id, string columnName, string columnValue)
{
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
//请求
WebRequest req = WebRequest.Create(@"http://api.map.baidu.com/geodata/v2/poi/delete");
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=" + boundary;
//组织表单数据
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=\"" + columnName + "\"");
sb.Append("\r\n\r\n");
sb.Append(columnValue);
sb.Append("\r\n");
sb.Append("--" + boundary);
sb.Append("\r\n"); string head = sb.ToString();
byte[] form_data = Encoding.UTF8.GetBytes(head);
//结尾
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); //post总长度
long length = form_data.Length + foot_data.Length;
req.ContentLength = length;
Stream requestStream = req.GetRequestStream(); //发送表单参数
requestStream.Write(form_data, , form_data.Length); //结尾
requestStream.Write(foot_data, , foot_data.Length);
requestStream.Close(); //响应
WebResponse pos = req.GetResponse();
StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
string html = sr.ReadToEnd().Trim();
sr.Close();
if (pos != null)
{
pos.Close();
pos = null;
}
if (req != null)
{
req = null;
}
return html;
}
上传csv格式文件:
/// <summary>
/// 模拟表单提交,实现提交csv格式文件的上传
/// </summary>
/// <param name="ak"></param>
/// <param name="geotable_id"></param>
/// <param name="file"></param>
/// <returns></returns>
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/v2/poi/upload");
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=" + boundary;
//组织表单数据
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.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, , form_data.Length);
//文件内容
byte[] buffer = new Byte[checked((uint)Math.Min(, (int)fileStream.Length))];
int bytesRead = ;
while ((bytesRead = fileStream.Read(buffer, , buffer.Length)) != )
requestStream.Write(buffer, , bytesRead);
//结尾
requestStream.Write(foot_data, , foot_data.Length);
requestStream.Close(); //响应
WebResponse pos = req.GetResponse();
StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
string html = sr.ReadToEnd().Trim();
sr.Close();
if (pos != null)
{
pos.Close();
pos = null;
}
if (req != null)
{
req = null;
}
return html;
}
调用:
string ak = System.Configuration.ConfigurationManager.AppSettings["ak"].ToString();
string geotableID = System.Configuration.ConfigurationManager.AppSettings["geotableID"].ToString();
DeleteByName(ak, geotableID, "title", ""); //删除所有数据
UploadCSVFile(ak, geotableID, @"E:\databox.csv"); //上传数据
最新文章
- Building third-party products of OpenCascade
- 【原】Jqxgrid在Java服务器端分页
- AEAI WM V1.0 工作管理系统开源发版
- poj 1088 dp **
- leetcode 154. Find Minimum in Rotated Sorted Array II --------- java
- selenium 速查手册 python版
- JAVA获取CLASSPATH路径--转
- Sql自动生成字母加数字的随机数
- CenOS下LAMP搭建过程
- Java Scanner类
- Python笔记(七):字典、类、属性、对象实例、继承
- ROS_Kinetic_x 基於ROS和Gazebo的RoboCup中型組仿真系統(多機器人協作)
- BZOJ5412 : circle
- Python—day18 dandom、shutil、shelve、系统标准流、logging
- day 1总结-python基础
- oracle primary key &; foreign key
- A1065. A+B and C (64bit)
- android checkBox setTextColor无效
- https证书概念
- Mybatis(七)-- LRU LFU 算法