我写了个POST 跨网提交的东西可为什么 老出现 要写入到流中的字节超过指定的 Content-Length 字节大小代码入下
public static string PostData(string url,string indata,CookieContainer myCookieContainer)
{
string outdata="";
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength=indata.Length;
myHttpWebRequest.Method="POST";
myHttpWebRequest.CookieContainer=myCookieContainer;
Stream myRequestStream=myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
myStreamWriter.Close();
myRequestStream.Close();
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
Stream myResponseStream=myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312"));
outdata=myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return outdata;
} private void Button2_Click(object sender, System.EventArgs e)
{
CookieContainer myCookieContainer=new CookieContainer();
string sss=PostData("http://www.163888.net/login.asp","user="+assaddas.Text+"&u=on&pass="+password.Text+"&reto=/club/",myCookieContainer);
sss=PostData("http://www.163888.net/bbs/showmsg.asp","tusername=banzouku1&title=111ss&content=sssssssssss&action=发 送",myCookieContainer);
Response.Write(sss);
}
public static string PostData(string url,string indata,CookieContainer myCookieContainer)
{
string outdata="";
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength=indata.Length;
myHttpWebRequest.Method="POST";
myHttpWebRequest.CookieContainer=myCookieContainer;
Stream myRequestStream=myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
myStreamWriter.Close();
myRequestStream.Close();
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
Stream myResponseStream=myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312"));
outdata=myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return outdata;
} private void Button2_Click(object sender, System.EventArgs e)
{
CookieContainer myCookieContainer=new CookieContainer();
string sss=PostData("http://www.163888.net/login.asp","user="+assaddas.Text+"&u=on&pass="+password.Text+"&reto=/club/",myCookieContainer);
sss=PostData("http://www.163888.net/bbs/showmsg.asp","tusername=banzouku1&title=111ss&content=sssssssssss&action=发 送",myCookieContainer);
Response.Write(sss);
}
我一点就出现要写入到流中的字节超过指定的 Content-Length 字节大小请问如何解决?????
myHttpWebRequest.ContentLength=indata.Length;
不对,如果你的String 中有中文的话,会出现问题,你需要先把String转换成byte,然后计算长度,例如:
using System.Text;// Get string length in UTF-8 encoding
byte[] bData = UnicodeEncoding.UTF8.GetBytes( indata);
myHttpWebRequest.ContentLength = bData.Length;
myHttpWebRequest.ContentLength = UnicodeEncoding.UTF8.GetByteCount( inData );