找人看看WEBrequest与WEBrespone的问题

jin20000 2008-06-12 04:44:39
我照着<C#入门经典>(第三版)里面的29章29.4的例子写的,就是控件的名字和变量名有点不同,不知道为什么GETFILE就是要报错!!!!!!!!!
请大家帮我看看,问题在哪,谢谢!!!!!!!!!!!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace FTPclient
{
public partial class frmFTPClient : Form
{
private string serverdirectory ;

public void FillDirectoryList(Stream stre)
{
StreamReader strr = new StreamReader(stre);
string str = strr.ReadToEnd();
string[] strl = str.Split('\n');
listFile.DataSource = strl;
strr.Close();
}

public frmFTPClient()
{
InitializeComponent();
}


private void btnOpen_Click(object sender, EventArgs e)
{
Cursor c = this.Cursor;
FtpWebResponse respone = null;
Stream stream = null;
try
{
this.Cursor = Cursors.WaitCursor;
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(txtserver.Text);
request.Credentials = new NetworkCredential(txtuser.Text, txtpwd.Text);
request.Method = WebRequestMethods.Ftp.ListDirectory;
respone = (FtpWebResponse)request.GetResponse();
stream = respone.GetResponseStream();
FillDirectoryList(stream);
serverdirectory = null;
btnGetFile.Enabled = false;
btnOpenDirectory.Enabled = false;
}
catch( Exception ex)
{
MessageBox.Show("ERROE FTP Client");
}
finally
{
if (respone!=null)
respone.Close();
if (stream!=null)
stream.Close();
this.Cursor = c;
}


}

private void btnOpenDirectory_Click(object sender, EventArgs e)
{
FtpWebResponse respone = null;
Stream stream = null;
try
{
string sub = listFile.SelectedValue.ToString().Trim();
serverdirectory += @"/" + sub;
Uri baseuri = new Uri(txtserver.Text);
Uri uri = new Uri(baseuri, serverdirectory);

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = new NetworkCredential(txtuser.Text, txtpwd.Text);
request.Method = WebRequestMethods.Ftp.ListDirectory;
respone = (FtpWebResponse)request.GetResponse();
stream = respone.GetResponseStream();
FillDirectoryList(stream);
//serverdirectory = null;
//btnGetFile.Enabled = false;
//btnOpenDirectory.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show("ERROE FTP Client");
}
finally
{
if (respone != null)
respone.Close();
if (stream != null)
stream.Close();
}
}

private void btnGetFile_Click(object sender, EventArgs e)
{
FtpWebResponse respone = null;
Stream instream = null;
Stream outstream = null;
try
{
Uri baseuri = new Uri(txtserver.Text);
string name = listFile.SelectedValue.ToString().Trim();
string fullname = serverdirectory + @"/" + name;
Uri uri = new Uri(baseuri, fullname);

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(txtserver.Text);
request.Credentials = new NetworkCredential(txtuser.Text, txtpwd.Text);
///?????
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = cbusebinary.Checked;
respone = (FtpWebResponse)request.GetResponse();

instream = respone.GetResponseStream();
SaveFileDialog sf = new SaveFileDialog();
sf.FileName = name;
if (sf.ShowDialog() == DialogResult.OK)
{
outstream = File.OpenWrite(sf.FileName);
byte[] buffer = new byte[4096];
int size = 0;
while ((size=instream.Read(buffer,0,4096))>0)
{
outstream.Write(buffer, 0, size);
}
}

//FillDirectoryList(instream);
//serverdirectory = null;
//btnGetFile.Enabled = false;
//btnOpenDirectory.Enabled = false;

}
catch (Exception ex)
{
MessageBox.Show("ERROE FTP Client");
}
finally
{
if (respone != null)
respone.Close();
if (instream != null)
instream.Close();
if (outstream != null)
outstream.Close();
}
}

private void listFile_SelectedIndexChanged(object sender, EventArgs e)
{
btnGetFile.Enabled = true;
btnOpenDirectory.Enabled = true;
}
}
}
...全文
55 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jin20000 2008-06-12
  • 打赏
  • 举报
回复
哦,搞定了,
jin20000 2008-06-12
  • 打赏
  • 举报
回复
也就是btnGetFile_Click事件里,会有错误.
在执行"respone = (FtpWebResponse)request.GetResponse();"的时候,就会跳到
"
catch (Exception ex)
{
MessageBox.Show("ERROE FTP Client");
}
"
提示错误:请求的 URI 对于此 FTP 命令无效。

请教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧