原代码如下:private WebClient _client = new WebClient();string postValues = "VER=1.1&CMD=GetMsgEx&SEQ="+DateTime.Now.Ticks.ToString().Substring(7,7)+"&UIN="+Number;_client.Headers.Add("Content-Type","application/x-www-form-urlencoded");
Byte[] byteArray = ystem.Text.Encoding.ASCII.GetBytes(postValues);
Byte[] pageData = _client.UploadData(Host,"POST",byteArray);这段代码在最后一句时出错,出错内容如下:
错误:source:System
message:服务器提交了协议冲突. Section=ResponseStatusLine
stackTrace:   在 System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)
   在 System.Net.WebClient.UploadData(Uri address, String method, Byte[] data)
   在 System.Net.WebClient.UploadData(String address, String method, Byte[] data)也就是说,最后一句UploadData时出错。
请大侠帮助,能否用Tcpclient来实现这段代码?同时,提供一段php代码:
function query($str)
{
$fp = fsockopen('tqq.tencent.com', '8000', $errno, $errstr, 1);  if(!$fp){ 
$GLOBALS['QQ_ERROR_MSG'] = "ERROR:$errstr ($errno)"; 
return QQ_SOCKET_ERROR;
}
else
{
$str = str_replace("\r\n","\n",$str);
fputs($fp, "POST HTTP/1.1\r\n"); 
fputs($fp, "Content-length: ".strlen($str)."\r\n"); 
fputs($fp, "Connection: close\r\n\r\n"); 
fputs($fp, $str . "\r\n\r\n");  $res = "";
while(!feof($fp))

$res .= fgets($fp, 4096); 
}  fclose($fp);  $len = strlen($res); if($res)
{
$header = array();
list($header[],$header[],$header[],$header[],$header[],$body) = explode("\n",$res,6);
$body = chop($body,"\r\n");
}
else
{
return false;
}
return $body;
}
}如果有哪位大侠能把这段php代码用c#来实现也是一样的,,谢谢啦

解决方案 »

  1.   

    string uriString = "http://localhost/login.aspx";
    // 创建一个新的 WebClient 实例.
    WebClient myWebClient = new WebClient();
    string postData = "Username=admin&Password=admin";
    // 注意这种拼字符串的ContentType
    myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");
    // 转化成二进制数组
    byte[] byteArray = Encoding.ASCII.GetBytes(postData);
    // 上传数据,并获取返回的二进制数据.
    byte[] responseArray = myWebClient.UploadData(uriString,"POST",byteArray);
      

  2.   

    呵呵,谢谢您的好意。主要问题是:
    "myWebClient.UploadData" 这个代码会出错,,居然会丢包的,,
    同样一个程序,php写的就很稳定,不出错,
    我用.updloadData就一直出错,丢失包。
      

  3.   


    myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");
    if (cookie_!="")
    {
    myWebClient.Headers.Add("Cookie",cookie_);
    }
    byte[] byteArray = Encoding.ASCII.GetBytes(postData);
    byte[] responseArray = myWebClient.UploadData(url_,"POST",byteArray);
    return Encoding.GetEncoding(54936).GetString(responseArray);
    我这样写也没有丢包也没有出错