Aufruf google-Url Shortner-API in C#
Möchte ich nennen, die google url shortner-API aus meinem C# - Konsolenanwendung, die Anfrage, die ich versuche zu implementieren ist:
POST https://www.googleapis.com/urlshortener/v1/url
Content-Type: application/json
{"longUrl": "http://www.google.com/"}
Wenn ich versuche, um diesen code zu verwenden:
using System.Net;
using System.Net.Http;
using System.IO;
und die main-Methode ist:
static void Main(string[] args)
{
string s = "http://www.google.com/";
var client = new HttpClient();
//Create the HttpContent for the form to be posted.
var requestContent = new FormUrlEncodedContent(new[] {new KeyValuePair<string, string>("longUrl", s),});
//Get the response.
HttpResponseMessage response = client.Post("https://www.googleapis.com/urlshortener/v1/url",requestContent);
//Get the response content.
HttpContent responseContent = response.Content;
//Get the stream of the content.
using (var reader = new StreamReader(responseContent.ContentReadStream))
{
//Write the output.
s = reader.ReadToEnd();
Console.WriteLine(s);
}
Console.Read();
}
Bekomme ich den Fehlercode 400: Diese API nicht unterstützt parsing-form-encoded input.
Ich weiß nicht, wie dieses Problem zu beheben.
InformationsquelleAutor smohamed | 2011-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie den folgenden code (aus Verwendung von System.Net).
Sie sollten beachten, dass der contenttype muss angegebenen werden und müssen "application/json"; und auch die Zeichenfolge zu senden, müssen im json-format.
const string MATCH_PATTERN = @"""id"": ?""(?<id>.+)"""; Console.WriteLine(Regex.Match(responseText, MATCH_PATTERN).Groups["id"].Value);
bekommt die url verkürzen.application/json, war das fehlende Stück für mich. War mit text/json, sich wie ein idiot.
InformationsquelleAutor csg
Google hat ein NuGet-Paket für die Verwendung der API-URL-Kürzung aus. Details finden Sie hier.
Basierend auf dieses Beispiel Sie implementieren würden Sie als solche:
Wenn Sie sich hinter einer firewall, müssen Sie möglicherweise einen proxy zu benutzen. Unten ist eine Implementierung des
ProxySupportedHttpClientFactory
, die auskommentiert ist im obigen Beispiel. Gutschrift für das geht zu in diesem blog-post.InformationsquelleAutor Eric Lease
Wie über das ändern
zu
Tut mir Leid, dass, aktualisiert die Antwort
Fehler: 'System.Net.Http.HttpContent' enthält keine definition für 'CreateEmpty'
Sorry, re-Lesen Sie die vollständige Frage und merkte, ich war die Beantwortung falsch. Bitte sehen Sie die neuesten revision.
InformationsquelleAutor competent_tech
Folgenden ist mein Arbeits-code. Vielleicht ist es hilfreich für Sie.
InformationsquelleAutor Muhammad Awais