我在網上發現了一些使用Mashape API獲取QR碼的優秀代碼。 Here。在.NET中使用Mashape API的問題
他們的代碼的偉大工程,但如果我嘗試將其更改爲使用其他Mashape,我得到一個
"An exceptions occured during the operation, making the result invalid"
錯誤。還有一些關於檢查內部異常的內容。
下面的代碼顯示了來自鏈接的QR碼,我試圖使用Weather API和Spotify API。
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
{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}
什麼是內部異常說呢? – 2013-05-02 22:52:41
增加了內部異常 – 2013-05-02 22:55:48
這看起來很可疑: client.Headers [「X-Mashape-Authorization」] =「mashape-api-code-goes-here」; – 2013-05-02 22:58:59