HTTP-Anforderung in Swift ohne NSURLRequest

8

Wir möchten HTTP (S) -Anfragen (GET) stellen, um eine API aufzurufen. Das Problem ist, dass NSURLRequest (im Moment) nicht in der Foundation für Linux implementiert ist ( Ссылка ).

Gibt es noch andere Möglichkeiten, eine HTTP-Anfrage zu erstellen?

    
boxi 25.01.2016, 16:12
quelle

5 Antworten

5

Es gibt ein nettes Projekt namens HTTPMiddleware , das nützlich sein kann, es ist nur ein Middleware-Framework, aber es funktioniert gut.

Hier ist ein Codebeispiel:

%Vor%

Hier ist die offizielle Seite . Sie können auch einen JSON Parser in den entsprechenden Quellen finden nützlich für allgemeine Anfragen. Die Installation erfordert nur den uri_parser .

    
Alessandro Ornano 08.06.2016, 18:54
quelle
2

Wenn man bedenkt, dass sich Swift unter Linux in ständiger Entwicklung befindet, ist der beste Ansatz meiner Meinung nach, keine ernsthafte Entwicklung zu betreiben, bis die Situation stabiler ist. Selbst wenn Sie das Hindernis überwinden, HTTP-Anfragen zu stellen, wird es wahrscheinlich andere unangenehme Überraschungen geben, da die Technologie unter Linux noch nicht ausgereift ist.

Wenn dies jedoch nur eine Frage der Neugier und des Lernens ist, hier ein paar Ideen, auch wenn ich sie nicht selbst ausprobiert habe:

  • Vielleicht kann CoreFoundation C APIs direkt aufgerufen werden.
  • Schreiben Sie einen C-Wrapper, der die benötigte Schnittstelle mit guten alten C-Netzwerk-APIs bereitstellt. Dieser Ansatz würde wahrscheinlich mehr Aufwand erfordern als die anderen, da Sie viele Räder neu erfinden werden.
  • Schreiben Sie einen C-Wrapper, aber wickeln Sie eine höhere C-Bibliothek um, die mit URLs funktioniert; Libcurl kommt mir in den Sinn.

Unabhängig davon, welche dieser Ansätze Sie verwenden, müssen Sie mit dem C-Code interagieren. Eine Möglichkeit besteht darin, Systemmodule zu verwenden, siehe Importieren eines Swift-Moduls mit a C-Bibliothek als möglicher Ausgangspunkt.

    
Anatoli P 28.01.2016 05:55
quelle
2

Betrachten Sie die folgende Lösung, die auf ccurl library basiert:

Ссылка

Ich habe es unter Ubuntu 14.04 gemacht

Swift 3.0 - neueste Entwicklungsversion: Ссылка

Folgendes Paket und Anweisungen funktionierten im Allgemeinen gut:

Ссылка

Um Kompilierungsfehler zu beheben, musste ich sots_curl.h im CCurl-Paket ändern. Folgende Zeile wurde hinzugefügt:

%Vor%

Für das App-Building müssen Sie folgende Schritte im App-Ordner durchführen:

%Vor%

Für die Ausführung der App müssen Sie den folgenden Befehl im App-Ordner ausführen:

%Vor%

Ich hoffe, es hilft. Stellen Sie Fragen, falls vorhanden:)

    
Igor B. 09.06.2016 13:35
quelle
1

Seit Mitte 2017 gibt es die IBM SwiftyRequest -Bibliothek, die sowohl auf Linux als auch auf iOS funktioniert. Ich habe es unter Linux versucht und scheint gut zu funktionieren.

Das Erstellen einer Anfrage sieht folgendermaßen aus (angepasst an ein Beispiel aus der Dokumentation):

%Vor%

Wenn Sie JSON für die Antworten verwenden, kann es Ihnen sogar ein Objekt basierend auf einem von Ihnen bereitgestellten "Schema" erstellen (schauen Sie sich .responseObject und JSONDecodable im Tests für Beispiele).

    
naktinis 09.02.2018 10:48
quelle
0

Nicht eine vollständige Antwort, aber vielleicht nützlich für jemanden:

Ich brauchte nur NSData(contentsOfURL: NSURL) , also schrieb ich einen Wrapper für KituraNet, der das mit einer Schließung macht. Ich überprüfe nur, ob Daten vorhanden sind und gebe das zurück.

Da NSURL noch lange nicht vollständig implementiert ist, habe ich mich auch entschieden, die URL als String zu übergeben.

Es ist kein Ersatz für NSURLRequest , nur die gute alte Bequemlichkeit von NSData(contentsOfURL: NSURL)

%Vor% %Vor%     
R Menke 10.06.2016 16:52
quelle

Tags und Links