一直出现这个异常,该怎么解决

解决方案 »

  1.   

    本帖最后由 net_lover 于 2012-06-12 13:31:34 编辑
      

  2.   

     public string PostWebRequests(string postURL, string paramData)
            {
                string ret = string.Empty;
                try
                {
                    Encoding dataEncode = Encoding.UTF8;
                    byte[] byteArray = dataEncode.GetBytes(paramData);
                    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postURL));
                    webReq.Timeout = 20000;
                    webReq.ReadWriteTimeout = 20000;
                    webReq.Method = "POST";
                    webReq.ContentType = "application/x-www-form-urlencoded;";                webReq.ContentLength = byteArray.Length;
                    Stream newStream = webReq.GetRequestStream();
                    newStream.Write(byteArray, 0, byteArray.Length);  //这句就出现那个异常
                    newStream.Close();
                    HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                    StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);                ret = sr.ReadToEnd();                sr.Close();
                    response.Close();
                    newStream.Close();
                }
                catch (WebException)
                {
                    ret = "0";
                    return ret;
                }
                return ret;
            }//检查更新
            private void doWinForm()
            {
                string urlpost = GlobParams.baseURL + "login/getVersion.action";  //更新的地址
                //发送的请求
                OptBase opt = new OptBase();
                string result = opt.PostWebRequests(urlpost, "");
                MessageBox.Show("获取的版本号是:"+result);
                if (GetSerial.getLocVersion().CompareTo(result) < 0)
                {
                    MessageBox.Show("检测到有新版本发布了,是否需要更新!", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk ,MessageBoxDefaultButton.Button3);
                    System.Diagnostics.Process.Start("update.exe", GlobParams.baseURL);
                    Application.Exit();
                }
                else //不更新就直接登陆
                {
                    Status ld = new Status();
                    ld.ShowDialog();
                    ld.Dispose();
                }
            }代码,我做自动更新的
      

  3.   

    本帖最后由 net_lover 于 2012-06-12 13:38:06 编辑
      

  4.   

    paramData不是服务器地址是提交的参数,你调用的时候没写
      

  5.   

    异常是在newStream.Write(byteArray, 0, byteArray.Length);  
    调试到这句出现的
    我前面做了一单独的例子也是这样传的,正常运行没问题,放到项目里面就除这个问题
      

  6.   

    string result = opt.PostWebRequests(urlpost, "a=xxxxxxxxxx")
      

  7.   

    private void LoginForm_Load(object sender, EventArgs e)
            {
                Thread picThread = new Thread(new ThreadStart(doUpdate));
                picThread.IsBackground = true;
                picThread.Start();
            }        //检查更新
            private void doUpdate() {
                //地址
                string urlpost = GlobParam.baseURL + "login/getVersion.action";            //开始发送请求
                HttpUtil httpUtil = new HttpUtil();
                string result = httpUtil.PostWebRequest(urlpost, "");
                if (GetSerial.getLocVersion().CompareTo(result) < 0)
                {
                    System.Diagnostics.Process.Start("update.exe", GlobParam.baseURL);
                    Application.Exit();
                }
            }
    这个是例子里面的 就这样传没问题的
      

  8.   

    道理都是一样的,
    你看看
    HttpUtil httpUtil = new HttpUtil();
      string result = httpUtil.PostWebRequest这里的代码跟你写的一样吗HttpUtil类的 PostWebRequest
      

  9.   

    单步看看byteArray值及长度
      

  10.   

    你没有传值,为0 是正常的,
    不是给你说了吗
    if(paramData.Length > 0)
    {
    //再执行
    newStream.Write(byteArray, 0, byteArray.Length);
    }
      

  11.   

    string result = httpUtil.PostWebRequest(urlpost, "");
    不需要参数 传空值就可以了
      

  12.   

    指定的参数已超出有效值的范围 参数名:length  还是这样问题