var parameter = new Dictionary<string, string>() {
{ "username", "username" },
{ "password", "password" }
};
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(BaseUrl+"Login"));
CookieContainer cookie=request.CookieContainer;
request.KeepAlive = true;
//上面的http头看情况而定,但是下面俩必须加
request.ContentType = "application/form-url-encoded";
request.Method = "POST";
Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
byte[] postData = encoding.GetBytes(parameter);//postDataStr即为发送的数据
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postData, 0, postData.Length);
HttpWebResponse newresponse = (HttpWebResponse)request.GetResponse();
byte[] postData = encoding.GetBytes(parameter);//postDataStr即为发送的数据 这句话好像出错了,请问如果要传递字典,怎么传?
9 个解决方案
#1
可以传bt64
然后再转
然后再转
/// <summary>
/// 把 Base64 转图片
/// </summary>
/// <param name="base64String"></param>
public MemoryStream Base64ToImage(string base64String)
{
// base64String.Substring(0, base64String.Length / 40 * 40) 主要是 Base64 編碼長度有規定必須是 0 或 4 的整數倍,所以為免出錯,把長度處理一下
byte[] imageBytes = Convert.FromBase64String(base64String);
// byte[] imageBytes = Convert.FromBase64String(base64String.Substring(0,128));
MemoryStream _ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
// Convert byte[] to Image
_ms.Write(imageBytes, 0, imageBytes.Length);
/*
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
image.Save(Server.MapPath("Report"), ImageFormat.Png);
*/
return _ms;
}
// 把图片转 Base64 编码
public string ImageToBase64(System.Drawing.Image image, System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
// Convert Image to byte[]
image.Save(ms, format);
byte[] imageBytes = ms.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
#2
可以用hashtable吗? Dictionary<string, string> 这个好像不支持序列化
var parameter = new Hashtable() {
{ "username", "username" },
{ "password", "password" }
};
Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
MemoryStream ms = new MemoryStream();
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(ms, parameter);
ms.Close();
byte[] postData = ms.GetBuffer();
#3
Post Data能随便写吗?
#4
encoding.GetBytes 参数得是字符串。
#5
Post的参数和get的参数格式差不多都是
key1=value1&key2=value2
参考:
C# HttpWebRequest提交数据方式浅析
http://developer.51cto.com/art/200909/149995.htm
key1=value1&key2=value2
参考:
C# HttpWebRequest提交数据方式浅析
http://developer.51cto.com/art/200909/149995.htm
#6
这个传进入的是字符串,不是我想要的。。。
#7
???????
我想问一下为啥要传这个呢
????
哪一家的web服务器代码,会接收这种表单提交呢?
你不会是想提交json过去把?还是你想通过hashtable构造一个表单??
我想问一下为啥要传这个呢
????
哪一家的web服务器代码,会接收这种表单提交呢?
你不会是想提交json过去把?还是你想通过hashtable构造一个表单??
#8
这至少需要知道两个知识。
其一,是知道“序列化/反序列化”概念。把内存对象变为低级的格式,才能跟“传送”功能(你这里就是byte[])连接上。
其二,大多数比较通用的序列化机制都是针对比较简单通用的内存对象。你在设计程序时也不要一味地纠结。例如“字典”有一大堆累赘的东西会让序列化程序出错,所以应该转换为数组(使用Linq的ToArray方法),再序列化。反过来说,数组也是使用Linq的ToDictionary方法转换为字典。
#9
这可以作为一个接入http协议的c/s服务器。
#1
可以传bt64
然后再转
然后再转
/// <summary>
/// 把 Base64 转图片
/// </summary>
/// <param name="base64String"></param>
public MemoryStream Base64ToImage(string base64String)
{
// base64String.Substring(0, base64String.Length / 40 * 40) 主要是 Base64 編碼長度有規定必須是 0 或 4 的整數倍,所以為免出錯,把長度處理一下
byte[] imageBytes = Convert.FromBase64String(base64String);
// byte[] imageBytes = Convert.FromBase64String(base64String.Substring(0,128));
MemoryStream _ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
// Convert byte[] to Image
_ms.Write(imageBytes, 0, imageBytes.Length);
/*
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
image.Save(Server.MapPath("Report"), ImageFormat.Png);
*/
return _ms;
}
// 把图片转 Base64 编码
public string ImageToBase64(System.Drawing.Image image, System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
// Convert Image to byte[]
image.Save(ms, format);
byte[] imageBytes = ms.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
#2
可以用hashtable吗? Dictionary<string, string> 这个好像不支持序列化
var parameter = new Hashtable() {
{ "username", "username" },
{ "password", "password" }
};
Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
MemoryStream ms = new MemoryStream();
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(ms, parameter);
ms.Close();
byte[] postData = ms.GetBuffer();
#3
Post Data能随便写吗?
#4
encoding.GetBytes 参数得是字符串。
#5
Post的参数和get的参数格式差不多都是
key1=value1&key2=value2
参考:
C# HttpWebRequest提交数据方式浅析
http://developer.51cto.com/art/200909/149995.htm
key1=value1&key2=value2
参考:
C# HttpWebRequest提交数据方式浅析
http://developer.51cto.com/art/200909/149995.htm
#6
这个传进入的是字符串,不是我想要的。。。
#7
???????
我想问一下为啥要传这个呢
????
哪一家的web服务器代码,会接收这种表单提交呢?
你不会是想提交json过去把?还是你想通过hashtable构造一个表单??
我想问一下为啥要传这个呢
????
哪一家的web服务器代码,会接收这种表单提交呢?
你不会是想提交json过去把?还是你想通过hashtable构造一个表单??
#8
这至少需要知道两个知识。
其一,是知道“序列化/反序列化”概念。把内存对象变为低级的格式,才能跟“传送”功能(你这里就是byte[])连接上。
其二,大多数比较通用的序列化机制都是针对比较简单通用的内存对象。你在设计程序时也不要一味地纠结。例如“字典”有一大堆累赘的东西会让序列化程序出错,所以应该转换为数组(使用Linq的ToArray方法),再序列化。反过来说,数组也是使用Linq的ToDictionary方法转换为字典。
#9
这可以作为一个接入http协议的c/s服务器。