我正在使用C#WebClient将登录详细信息发布到页面并阅读所有结果.
我试图加载的页面包括flash(在浏览器中,它转换为HTML).我猜它是闪存避免被搜索引擎捡起来???
我感兴趣的flash只是文本(不是图像/视频)等,当我在firefox中"查看选择源"时,我确实在HTML中看到了我想看到的文本.
(有趣的是,当我查看整个页面的源代码时,我看不到HTML中的文本,我想看到.这可能是相关的吗?)
目前,在我发布了我的登录详细信息并将HTML加载回来之后,我看到了不显示Flash HTML的页面(就像我查看了整个页面的源代码一样).
提前致谢,
吉姆
PS:我应该指出POST实际上正在运行,我的登录成功.
我对silverlight很新,并且非常惊讶地发现只能进行异步文件下载.好吧,我试图通过设置一个标志并等待它改变来反击这一点.这是我的简单代码
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
WebClient webClient = new WebClient();
webClient.DownloadProgressChanged +=
new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(new Uri("/trunk/internal/SilverLightInterface.ashx?xxid=XXX", UriKind.Relative));
while (XmlStateStream == null) { }
lblProgress.Content = "Done Loading";
}
void webClient_DownloadProgressChanged(object sender,
DownloadProgressChangedEventArgs e) {
lblProgress.Content = "Downloading " + e.ProgressPercentage + "%";
}
volatile Stream XmlStateStream = null;
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error != null)
{
lblProgress.Content = "Error: " + e.Error.Message;
return;
}
XmlStateStream = e.Result;
}
Run Code Online (Sandbox Code Playgroud)
这导致Firefox实际冻结(这在我开发时正在做其他事情时非常烦人)(顺便说一下,对firefox的称赞导致我测试它并且firefox冻结了,但是我没有丢失我在恢复后输入的内容)
我不明白为什么while(XmlStateStream==null){} …
我想在Linux(首选)或Windows上安装svn Web客户端。我只需要只读功能(不需要提交),并且我希望能够使用diff比较版本。我的svn服务器在另一台计算机上,因此Web服务器需要通过http访问它。它也应该是免费的...
您知道这样的网络客户端吗?
我想要做的是让我的PHP页面显示一个字符串,我通过System.Net.WebClient通过我的C#应用程序中的函数创建.
真的是这样的.以最简单的形式,我有:
WebClient client = new WebClient(); string URL = "http://wwww.blah.com/page.php"; string TestData = "wooooo! test!!"; byte[] SendData = client.UploadString(URL, "POST", TestData);
所以,我甚至不确定这是否是正确的方法..而且我不确定如何实际获取该字符串并将其显示在PHP页面上.像print_r(SendData)?
任何帮助将不胜感激!
我正在尝试发送我在内存流中创建的XML文件.当我尝试使用UploadFile并获得无效参数的错误时,问题就出现了.我的问题是,无论如何我可以使用我创建的内存流WebClient.UploadFile来发送文件或者我是否需要以其他方式执行此操作?
string firstname = Request.Headers["firstname"].ToString();
string lastname = Request.Headers["lastname"].ToString();
string organization = Request.Headers["organization"].ToString();
string phone = Request.Headers["phone"].ToString();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
MemoryStream ms = new MemoryStream();
using (XmlWriter xml = XmlWriter.Create(ms, settings))
{
xml.WriteStartDocument();
xml.WriteStartElement("List");
xml.WriteWhitespace("\n");
xml.WriteStartElement("Employee");
{
xml.WriteElementString("First", firstname);
xml.WriteElementString("Last", lastname);
xml.WriteWhitespace("\n");
xml.WriteElementString("Organization", organization);
xml.WriteElementString("Phone", phone);
}
xml.WriteEndElement();
xml.WriteEndDocument();
}
WebClient client = new WebClient();
client.UploadFile("http://test.com/test.aspx", ms);
Run Code Online (Sandbox Code Playgroud) 我是Windows Phone 7开发的新手,如果你愿意,我在查找如何在'后台'中下载一些数据时会遇到一些麻烦.我知道这是可能的,因为像ESPN等应用程序显示"正在加载... ..".在下载他们的数据时,UI仍然完全响应.我想要做的是下载一些Twitter数据.
这是我现在拥有的,但它阻止了atm:
// Constructor:
// load the twitter data
WebClient twitter = new WebClient();
twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitter_DownloadStringCompleted);
twitter.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=badreligion"));
// Callback function:
void twitter_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
{
return;
}
XElement xmlTweets = XElement.Parse(e.Result);
TwitterListBox.ItemsSource = from tweet in xmlTweets.Descendants("status")
select new TwitterItem
{
ImageSource = tweet.Element("user").Element("profile_image_url").Value,
Message = tweet.Element("text").Value,
UserName = tweet.Element("user").Element("screen_name").Value
};
}
Run Code Online (Sandbox Code Playgroud)
编辑:尝试多线程:
// in constructor
Dispatcher.BeginInvoke(new ThreadStart(StartTwitterUpdate));
// other functions
private void StartTwitterUpdate()
{
// load …Run Code Online (Sandbox Code Playgroud) 一旦UploadValuesCompleted事件已被触发,是有可能得到的NameValueCollection是在请求上传?
我希望重新发送请求的可能性。
我正在做这样的事情:
NameValueCollection data = new NameValueCollection();
data.Add("myParam", "myValue");
WC.Headers["Content-Type"] = "application/x-www-form-urlencoded";
WC.UploadValuesAsync(Url, "POST", data);
Run Code Online (Sandbox Code Playgroud) 我试图在使用webclient和下载字符串从网站下载的字符串中找到Mauricio的索引.但是,在网站上它包含一个外国人物Maurício.所以我在别处找到了一些代码
string ToASCII(string s)
{
return String.Join("",
s.Normalize(NormalizationForm.FormD)
.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark));
}
Run Code Online (Sandbox Code Playgroud)
转换外国字符.我测试了代码并且它可以工作.所以我遇到的问题是,当我下载字符串时,它会下载为MaurA-cio.我试过了两个
wc.Encoding = System.Text.Encoding.UTF8;
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
也没有阻止它作为MaurA-cio下载.
(另外,我无法更改搜索,因为我从列表中获取搜索词).
我还能尝试什么?谢谢
我正在尝试使用C#按照以下方式在Web服务器中上传文件
try
{
// create WebClient object
WebClient client = new WebClient();
string myFile = @"D:\test_file.txt";
client.Credentials = CredentialCache.DefaultCredentials;
// client.UploadFile(@"http://mywebserver/myFile", "PUT", myFile);
client.UploadFile(@"http://localhost/uploads", "PUT", myFile);
client.Dispose();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
Run Code Online (Sandbox Code Playgroud)
但是每次我得到这个错误:
远程服务器返回错误:(405)不允许使用方法。
嘿:)我正在努力使WebClient返回UTF-8。但是,当子应该返回像Ä它更多的是E还是让我觉得。
尝试了很多解决方法,但是它不起作用。
private string translate(string input, string languagePair)
{
string url = String.Format("https://translate.google.com/?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
WebClient wc = new WebClient();
wc.Headers.Add(HttpRequestHeader.AcceptCharset, "UTF-8");
wc.Encoding = Encoding.UTF8;
var data = wc.DownloadData(url);
var result = Encoding.UTF8.GetString(data);
//string result = wc.DownloadString(url);
int start = result.IndexOf("result_box");
string sub = result.Substring(start);
sub = sub.Substring(0, sub.IndexOf("</span>"));
start = sub.LastIndexOf(">");
sub = sub.Substring(start + 1);
return sub;
}
Run Code Online (Sandbox Code Playgroud)