标签: webclient

如何使用WebClient()下载文件时避免应用程序崩溃;

我正在使用C#WebClient(); 从服务器下载文件.问题是当我没有互联网或服务器没有响应时,我的应用程序崩溃尝试下载此文件.避免崩溃,中止并通知与服务器的连接失败的最佳做法是什么?

c# crash webclient

2
推荐指数
1
解决办法
4637
查看次数

Android相当于.NET中的WebClient

我有一个相当基本的应用程序,我在前一段时间在C#NET中编写,并希望为Android平台重写它.它只是使用某些Web软件公开的API,我只需使用.NET中的WebClient即可访问它.

WebClient myClient = new WebClient();

//Prepare a Name/Value Collection to hold the post values
NameValueCollection form = new NameValueCollection();
form.Add("username", "bob");
form.Add("password", GetMD5Hash("mypass"));
form.Add("action", "getusers");

// POST data and read response
Byte[] responseData = myClient.UploadValues("https://mysite.com/api.php", form);
string strResponse = Encoding.ASCII.GetString(responseData);
Run Code Online (Sandbox Code Playgroud)

我找到了WebKit(android.webkit| Android开发者),但只是从快速看起来似乎不合适.

有没有人有任何示例代码如何移植它?

.net c# android webclient

2
推荐指数
1
解决办法
2181
查看次数

使用WebClient访问本地文件

我开发了一个C#应用程序,它需要通过HTTP,FTP和有时本地文件(file://)访问许多不同的内容源.

我希望有一种统一的方式,我通过不同的协议访问这些文件,所以我选择了WebClient来做到这一点.

它适用于MSDN(FTP,HTTP,本地文件等)上记录的所有不同协议,但随后出现问题...在几次成功请求之后我无法使用URI访问本地文件的任何文件(文件:// C:\ some_dir\somefile.ext).

我已经检查过URI是否正确,如果我在浏览器中输入它,则可以轻松打开文件.我已经认识到一个非常有趣的事情 - 它在本地文件的开头也很好用.如果我尝试使用WebClient加载本地文件的内容,那么一开始它一切正常.

我的程序看起来像这样:

  1. 主线程开始
  2. 主线程上的一些初始化
  3. 多个线程从不同来源下载东西
  4. 等待所有线程完成
  5. 单线程处理下载的东西

正如我之前所描述的,如果我在第一步中调用我的WebClient.DownloadData(url)调用,它工作正常,但是当我尝试在第三步的任何线程中访问COMPLETELY相同的URI时,它无法获得URI以"file://"开头的任何本地文件.

我使用一个非常简单的代码来下载/获取本地文件:

WebClient wc = new WebClient();
data = wc.DownloadData(url);
Run Code Online (Sandbox Code Playgroud)

我想知道可能出现什么问题......也许我在之前的步骤中设置了一些东西,或者在并发线程中阻止我访问本地文件?在之前的步骤中,我会从FTP服务器和HTTP上下载内容,这可能导致问题?如果我在主线程的开头尝试,我可以轻松访问任何本地文件.访问FTP内容时,我也设置了凭据.也许这是我后来要求的影响?

.net c# uri webclient

2
推荐指数
1
解决办法
1万
查看次数

使用WebClient保存具有适当扩展名的图像

我需要检索并将图像从网站保存到我的本地文件夹.图像类型在.png,.jpg和.gif之间变化

我试过用了

string url = @"http://redsox.tcs.auckland.ac.nz/CSS/CSService.svc/";
string saveLoc = @"/project1/home_image";
using (var wc = new WebClient())
{
    wc.DownloadFile(url, saveLoc);
}
Run Code Online (Sandbox Code Playgroud)

但这会将文件'home_image'保存在没有扩展名的文件夹中.我的问题是你如何确定扩展名?有一个简单的方法吗?可以使用HTTP请求的Content-Type吗?如果是这样,你怎么做?

.net c# webclient image

2
推荐指数
1
解决办法
7470
查看次数

使用WebClient时获取乱码而不是希伯来语

我正在尝试使用WebClient类查看希伯来语页面的内容,但变得乱七八糟,而不是希伯来语。

我的代码是:

using (WebClient webClient = new WebClient())
{
    webClient.Headers.Add(HttpRequestHeader.ContentType, "charset=windows-1255");
    string page = webClient.DownloadString("http://hebrew-academy.huji.ac.il/Pages/default.aspx");
}
Run Code Online (Sandbox Code Playgroud)

我正确接收了英语内容,但是希伯来语的内容例如是胡言乱语:

<title>?” ??§?” ??™?” ???©?•??”?¢?'?¨?™?××€€“?”?£?”?'?™?×</ title>

有谁知道如何正确获取希伯来语内容?

c# encoding webclient

2
推荐指数
1
解决办法
1545
查看次数

如何使用iTunes搜索流派

(我做了一个重大的编辑,因为C#代码片段没有帮助但是掩盖了这个问题 - 希望它现在更清晰了)

我试图通过iTunes中的流派列出播客,并使用https://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html中描述的API 我能做的最好.

我在搜索名称和解析/使用JSON中的响应(例如搜索)时没有困难

    https://itunes.apple.com/search?term=Design&media=podcast&entity=podcast&limit=1
Run Code Online (Sandbox Code Playgroud)

    {
     "resultCount":1,
     "results": [{"wrapperType":"track", "kind":"podcast", "artistId":127446766,"collectionId":73330703, "trackId":73330703, "artistName":"Frances Anderton", "collectionName":"KCRW's DnA: Design & Architecture", "trackName":"KCRW's DnA: Design & Architecture", "collectionCensoredName":"KCRW's DnA: Design & Architecture", "trackCensoredName":"KCRW's DnA: Design & Architecture", "artistViewUrl":"https://itunes.apple.com/us/artist/kcrw/id127446766?mt=2&uo=4", "collectionViewUrl":"https://itunes.apple.com/us/podcast/kcrws-dna-design-architecture/id73330703?mt=2&uo=4", "feedUrl":"http://feeds.kcrw.com/kcrw/de", "trackViewUrl":"https://itunes.apple.com/us/podcast/kcrws-dna-design-architecture/id73330703?mt=2&uo=4", "artworkUrl30":"http://a2.mzstatic.com/us/r30/Podcasts/v4/42/ef/6a/42ef6a04-7873-e82d-716d-ae3f1c6ebca8/mza_1492532737245560899.30x30-50.jpg", "artworkUrl60":"http://a4.mzstatic.com/us/r30/Podcasts/v4/42/ef/6a/42ef6a04-7873-e82d-716d-ae3f1c6ebca8/mza_1492532737245560899.60x60-50.jpg", "artworkUrl100":"http://a2.mzstatic.com/us/r30/Podcasts/v4/42/ef/6a/42ef6a04-7873-e82d-716d-ae3f1c6ebca8/mza_1492532737245560899.100x100-75.jpg", "collectionPrice":0.00, "trackPrice":0.00, "trackRentalPrice":0, "collectionHdPrice":0, "trackHdPrice":0, "trackHdRentalPrice":0, "releaseDate":"2014-12-30T08:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "trackCount":25, "country":"USA", "currency":"USD", "primaryGenreName":"Design", "radioStationUrl":"https://itunes.apple.com/station/idra.73330703", "artworkUrl600":"http://a3.mzstatic.com/us/r30/Podcasts/v4/42/ef/6a/42ef6a04-7873-e82d-716d-ae3f1c6ebca8/mza_1492532737245560899.600x600-75.jpg", "genreIds":["1402", "26", "1301"], "genres":["Design", "Podcasts", "Arts"]}]
    }
Run Code Online (Sandbox Code Playgroud)

但是当试图获得基于流派的播客列表时,例如当使用流派id"1402"试图从类型"设计"获取列表时(实际上使用我使用的任何ID号)使用以下内容

    https://itunes.apple.com/search?term=1402&media=podcast&entity=podcast&attribute=genreIndex&limit=1
Run Code Online (Sandbox Code Playgroud)

我明白了

{
 "resultCount":0,
 "results": []
}
Run Code Online (Sandbox Code Playgroud)

(我从这里获取ID http://www.apple.com/itunes/affiliates/resources/documentation/genre-mapping.html)

显然我在做一些微不足道的错误.. …

json webclient itunes asp.net-web-api

2
推荐指数
1
解决办法
2894
查看次数

WebClient - UploadValues:获取状态响应

我试图将值从控制器传递到另一个域中的另一个控制器.我将数据添加到NameValueCollection并将其传递给另一个控制器[httppost]方法,并将接收到的数据映射到与我传递的模型相同的模型.

目前我通过同时打开VS的两个实例在本地运行它.当两个VS都打开时,值正确传递并且信息正确写入db并且我收到类似"{byte [0]}"的响应.现在,当我尝试停止目标控制器项目并尝试提交数据时,它不会工作但仍然得到与"{byte [0]}"相同的响应.有人可以帮我在这种情况下如何返回响应命令.有没有办法了解UploadValues已完成或未完成.

.........
.........

NameValueCollection resumeDetails = new NameValueCollection(); 
resumeDetails.Add("FirstName", "KRIZTE");

byte[] res = this.Post(ConfigurationManager.AppSettings["RedirectionUrl"].ToString(), resumeDetails);

return View("Index");
}

public byte[] Post(string uri, NameValueCollection resumeDetails)
{
    byte[] response = null;
    WebClient client = new WebClient();
    response = client.UploadValues(uri, resumeDetails);
    return response;
}
Run Code Online (Sandbox Code Playgroud)

c# webclient

2
推荐指数
1
解决办法
8769
查看次数

无法在xamarin.Forms可移植项目中使用WebClient

我是xamarin.form中的新手可移植项目,我可以使用httpClient,但是当我将System.IO名称空间添加到文件中时无法使用WebClient.我的应用程序是针对应用程序版本4.5,默认情况下,我从未更改过任何目标版本.

任何人都可以请让我知道如何在xamarin.forms便携式项目中使用WebClient?

webclient xamarin.android xamarin.forms visual-studio-2015

2
推荐指数
1
解决办法
1204
查看次数

将WebClient转换为HttpClient

我正在尝试将WebClient过去用于Win7项目的A转换为HttpClientWin8.1系统上使用的A。

WenClient:

public static void PastebinSharp(string Username, string Password)
        {
            NameValueCollection IQuery = new NameValueCollection();

            IQuery.Add("api_dev_key", IDevKey);
            IQuery.Add("api_user_name", Username);
            IQuery.Add("api_user_password", Password);

            using (WebClient wc = new WebClient())
            {
                byte[] respBytes = wc.UploadValues(ILoginURL, IQuery);
                string resp = Encoding.UTF8.GetString(respBytes);

                if (resp.Contains("Bad API request"))
                {
                    throw new WebException("Bad Request", WebExceptionStatus.SendFailure);
                }
                Console.WriteLine(resp);
                //IUserKey = resp;
            }
        }
Run Code Online (Sandbox Code Playgroud)

这是我对HttpClient的第一枪

public static async Task<string> PastebinSharp(string Username, string Password)
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("api_dev_key", …
Run Code Online (Sandbox Code Playgroud)

c# webclient http httpclient request

2
推荐指数
1
解决办法
1136
查看次数

C#从Web服务下载文件

我有一个Web服务,例如此示例,用于从服务器下载zip文件。通过网络浏览器打开URL时,可以正确下载zip文件。问题是当我尝试通过桌面应用程序下载zip文件时。我使用以下代码进行下载:

WebClient webClient = new WebClient();
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
webClient.DownloadFileAsync(new Uri(@"http://localhost:9000/api/file/GetFile?filename=myPackage.zip"), @"myPackage.zip");
Run Code Online (Sandbox Code Playgroud)

测试之后,我下载了myPackage.zip,但它为空,为0kb。关于此或任何其他服务器代码+客户端代码示例的任何帮助?

c# webclient webclient-download asp.net-web-api

2
推荐指数
1
解决办法
4045
查看次数