首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET中使用Mashape的问题

在.NET中使用Mashape的问题
EN

Stack Overflow用户
提问于 2013-05-02 22:48:12
回答 1查看 1.5K关注 0票数 1

我在网络上找到了一些很好的代码,用于使用Mashape获取QR代码。这里

他们的代码运行得很好,但是如果我尝试将它更改为使用另一个Mashape,我会得到一个

“操作期间发生异常,使结果无效”

错误。还有一些关于检查内部异常的东西。

下面的代码显示了链接中的QR代码,我尝试使用天气API和Spotify API。

代码语言:javascript
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    WebClient client = new WebClient();
    client.UploadStringCompleted += new UploadStringCompletedEventHandler(client_UploadStringCompleted);
    client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    client.Headers["X-Mashape-Authorization"] = "mashape-api-code-goes-here";

    StringBuilder postData = new StringBuilder();
    // For Spotify (this doesn't work)
    // postData.AppendFormat("{0}={1}", "q", HttpUtility.UrlEncode(txtArtitst.Text));
    // var uri = new Uri("https://mager-spotify-web.p.mashape.com/search/1/artist.json?", UriKind.Absolute);

    // For Weather info (this doesn't work)
    postData.AppendFormat("{0}={1}", "_method", HttpUtility.UrlEncode("getForecasts"));
    postData.AppendFormat("&{0}={1}", "location", HttpUtility.UrlEncode("brisbane"));
    var uri = new Uri("https://george-vustrey-weather.p.mashape.com/api.php?", UriKind.Absolute);

    // For QR Code (this works)
    //postData.AppendFormat("{0}={1}", "content", HttpUtility.UrlEncode("TestQRCode"));
    //postData.AppendFormat("&{0}={1}", "quality", HttpUtility.UrlEncode("L"));
    //postData.AppendFormat("&{0}={1}", "type", HttpUtility.UrlEncode("text"));
    //postData.AppendFormat("&{0}={1}", "size", HttpUtility.UrlEncode("5"));
    //var uri = new Uri("https://mutationevent-qr-code-generator.p.mashape.com/generate.php?", UriKind.Absolute);

    client.UploadStringAsync(uri, "POST", postData.ToString());
    txtResult.Text = postData.ToString();

    progress1.IsIndeterminate = true;
    button1.IsEnabled = false;
}


void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
    progress1.IsIndeterminate = false;

    var client = sender as WebClient;
    client.UploadStringCompleted -= client_UploadStringCompleted;
    string response = string.Empty;
    if (!e.Cancelled)
    {
        try
        {
            response = HttpUtility.UrlDecode(e.Result);  // seems to error out here - result invalid
            txtResult.Text = response;
        }
        catch (Exception ex)
        {
            txtResult.Text = "ERROR : " + ex.Message;
        }
    }

    button1.IsEnabled = true;
}

内部例外说:

InnerException

代码语言:javascript
复制
    {System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)}   System.Exception {System.Net.WebException}
EN

回答 1

Stack Overflow用户

发布于 2013-05-02 23:06:38

你试过用GET而不是帖子吗?

另外,您是否可以尝试application/json而不是application/x-www-form-urlencoded?

Windows 8上的一个工作示例- Sample/blob/master/App5/App5/MainPage.xaml.cs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16348998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档