Ich habe einen funktionierenden Curl-Befehl:
curl https://myapp.herokuapp.com/doit -F filedata=@path/to/img.jpg
Wie schreibe ich das modern mit URLReadoder URLExecute?
Ich habe Antworten gesehen, wie man das macht URLFetch, aber es ist veraltet.
Um dieses Beispiel in sich geschlossen zu halten, verwenden wir den HTTP-Introspektionsdienst unter https://httpbin.org. Dies ist eine sehr praktische Website zum Überprüfen und Debuggen von HTTP-Transaktionen.
Zuerst erstellen wir eine kleine JPG-Datei:
Export["zot.jpg", Image[{{1}}]]
Dann erstellen wir eine mehrteilige HTTP-Anfrage, die diese Datei veröffentlicht:
$req = HTTPRequest[
  "https://httpbin.org/anything"
  , <| "Method" -> "POST"
     , "Body" -> {"filedata" -> File["d:\\documents\\zot.jpg"]}
    |>
  ];
Wir können die Anfrage mit senden URLReadund dann den Text der Antwort überprüfen. Der Introspection-Service gibt eine JSON-Beschreibung der ursprünglichen Anforderung zurück:
$resp = URLRead[$req];
$resp["Body"]
(*
{
  "args": {}, 
  "data": "", 
  "files": {
    "filedata": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCCRXhpZgAASUkqAAgAAAADADEBAgA0AAAAMgAAADIBAgAUAAAAZgAAACqIBAABAAAA+v///wAAAABDcmVhdGVkIHdpdGggdGhlIFdvbGZyYW0gTGFuZ3VhZ2UgOiB3d3cud29sZnJhbS5jb20AMjAyMDowNzowMyAxMDo0NDowOQD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APf6/9k="
  }, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "deflate, gzip", 
    "Content-Length": "653", 
    "Content-Type": "multipart/form-data; boundary=------------------------f14f77e69b501379", 
    "Host": "httpbin.org", 
    "User-Agent": "Wolfram HTTPClient 12.1", 
    "X-Amzn-Trace-Id": "Root=1-5eff61aa-a60799b6493fef5b401d85c4"
  }, 
  "json": null, 
  "origin": "52.0.14.116", 
  "url": "https://httpbin.org/anything"
}
*)
Alternativ könnten wir verwenden, URLExecutedas den JSON-Antworttext automatisch als verschachtelte Liste von Regeln importiert:
URLExecute[$req]
(*
{ "args" -> {}
, "data" -> ""
, "files" -> {"filedata" -> "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCCRXhpZgAASUkqAAgAAAADADEBAgA0AAAAMgAAADIBAgAUAAAAZgAAACqIBAABAAAA+v///wAAAABDcmVhdGVkIHdpdGggdGhlIFdvbGZyYW0gTGFuZ3VhZ2UgOiB3d3cud29sZnJhbS5jb20AMjAyMDowNzowMyAxMDo0NDowOQD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APf6/9k="}
, "form" -> {}
, "headers" ->
  { "Accept" -> "*/*"
  , "Accept-Encoding" -> "deflate, gzip"
  , "Content-Length" -> "653"
  , "Content-Type" -> "multipart/form-data; boundary=------------------------61723d168bdcb569"
  , "Host" -> "httpbin.org"
  , "User-Agent" -> "Wolfram HTTPClient 12.1"
  , "X-Amzn-Trace-Id" -> "Root=1-5eff6281-e0a4c5e08b883fc0f0437148"
  }
, "json" -> Null
, "origin" -> "52.0.14.116"
, "url" -> "https://httpbin.org/anything"
}
*)
Das vom Introspection-Service zurückgegebene Ergebnis erleichtert es uns, zu überprüfen, ob diese Ergebnisse der Verwendung entsprechen curl:
curl https://httpbin.org/anything -F filedata=@d:\documents\zot.jpg
{
  "args": {},
  "data": "",
  "files": {
    "filedata": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCCRXhpZgAASUkqAAgAAAADADEBAgA0AAAAMgAAADIBAgAUAAAAZgAAACqIBAABAAAA+v///wAAAABDcmVhdGVkIHdpdGggdGhlIFdvbGZyYW0gTGFuZ3VhZ2UgOiB3d3cud29sZnJhbS5jb20AMjAyMDowNzowMyAxMDo0NDowOQD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APf6/9k="
  },
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "653",
    "Content-Type": "multipart/form-data; boundary=------------------------16397e5167d6e462",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-5eff6094-0034631c571243182edd4b3c"
  },
  "json": null,
  "method": "POST",
  "origin": "52.0.14.116",
  "url": "https://httpbin.org/anything"
}
Curl unterscheidet sich von der eingebauten Curl.
curl ist ein Befehlszeilenprogramm und eine Bibliothek zum Übertragen von Daten mit URLs.
Dies erfordert eine integrierte Mathematica oder einen Aufruf der OS-Befehlszeile.
Für einen eingebauten URLDownloadkann der entsprechende Befehl sein. Aber Curl wird auch zu Erkundungszwecken verwendet, also URLReadnimmt dieser Teil. Zur Auswertung der Antwort URLResponsebietet Mathematica an.
Das modernste eingebaute Paar in Mathematica ist URLRead[HTTPRequest[\[Ellipsis]]].
Curl ist Open Source und immergrün, solange der ISOOSI-Standard angewendet wird und URIs verwendet werden. So $ ScriptCommandLine ist die eingebaute in der Empfehlung
ReadList["!bash -c 'curl --help'"]  (*linux,MacOSX*)
(* {Verwendung: curl [Optionen ...] <url && url> -socket - unix + --abstract && -socket - unix + --abstract <path && path> abstract Verbinden Sie Domain Socket Unix über, -svc + - -alt <Dateiname && Dateiname> alt Aktivieren - Cache-Datei svc dies mit einer beliebigen Authentifizierungsmethode Pick (--anyauth), $ Failed} *)
Unter Windows:
RunProcess[{"cmd", "/c", "\"curl /?\""}]
Es gibt einige Nachrichten, die ignoriert werden können.
Die Ausgabe geht in die Shell, bis eine Datei angegeben wird. Dies kann durch Import gelesen werden. Pfad- und Namensverwaltung sind getrennt. Fehlermanagement in dem Fall ist notwendig.
Unter Windows kann es verallgemeinert werden
RunProcess[$SystemShell, All, "curl --help
 echo example line 2
 exit
 "]
Weiterverarbeitung in einem Schritt.
Eine einfache Fehlerkommunikation finden Sie in der Antwort von @WReach.
Bilden Sie eine der Websites für Curl, https://curl.haxx.se/::
DICT, DATEI, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet und TFTP. curl unterstützt SSL-Zertifikate, HTTP-POST, HTTP-PUT, FTP-Upload, HTTP-Formular-Upload, Proxys, HTTP / 2, HTTP / 3, Cookies, Benutzer- und Kennwortauthentifizierung (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate und Kerberos), Wiederaufnahme der Dateiübertragung, Proxy-Tunneling und mehr.
Der Vergleich mit URLRead[URLRequest[..]]Curl füllt mehr als ein Buch.
Möglicherweise gibt es eine Website, auf der die Mathematica-Lösung unangemessen ist. Denken Sie an Linus-Betriebssysteme, die möglicherweise veraltet oder sogar für Curl optimiert sind.
Ein Importtrend besteht darin, Lizenzen und Schlüssel zu benötigen. Bei Cookies sind also Unterschiede zu erwarten. Da die Locke frei ist, ist die Ergänzung zu Mathematica ein Kinderspiel. Umgekehrt ist es teurer.
Jana Duggar äußerte sich offen zu ihrer Suche nach Liebe. Hier ist alles, was sie zu diesem Thema und ihrem fünfjährigen Zeitfenster für die Ehe gesagt hat.
„Outlander“-Star Sam Heughan verriet kürzlich, was er vom Set mitnehmen wird, um an Jamie Fraser zu erinnern, die Rolle, die ihn zum Star gemacht hat.
„She Loves You“ wurde in einer Stunde geschrieben, an einem Tag aufgenommen und war der Song der Beatles mit einem ihrer besten Auftritte in ihrer Karriere.
Dolly Parton und ihre Oma Bessie hatten eine besondere Beziehung. Oma Parton war sehr krank, aber das hielt Dolly nicht davon ab, ihr einen Streich zu spielen.
Man könnte meinen, Eiche oder Hickory seien robust, aber wenn es um die härtesten Hölzer der Welt geht, kommen sie nicht einmal annähernd heran.
Der Ozean ist voller Schönheit, birgt aber auch einige der furchterregendsten Meeresbewohner unseres Planeten. Viele dieser Tiere lauern tief unter der Meeresoberfläche, in der dunklen, von hohem Druck geprägten Tiefsee.
Wenn du gegen feindliche Monster kämpfst oder dich für PvP-Situationen ausrüstest, kann dir das Wissen um die besten Schwertverzauberungen in Minecraft einen entscheidenden Vorteil verschaffen. Durch das Verzaubern von Schwertern verursachst du mehr Schaden, erhältst mehr Beute von Monstern und verlängerst die Haltbarkeit deines Schwertes.
Wenn von sozialistischen Ländern die Rede ist, stellt man sich oft die vollständige Kontrolle durch den Staat und das Fehlen von Privateigentum vor. In der Praxis unterscheiden sich sozialistische Wirtschaftssysteme jedoch stark.
 
                    „Children“ hinterlässt einen Cameo-Auftritt eines großen Namens und einige verheerende Neuigkeiten
 
                    Dieser RAV4 soll sich in ausgezeichnetem Zustand befinden und ist bereit für eine Partie Reise nach Jerusalem.
 
                    Auf Drohnenaufnahmen ist zu sehen, dass die Feuerwehrleute offenbar Mühe haben, den Brand zu löschen.
 
                    „Eyes of Wakanda“ ist direkt mit dem MCU verknüpft und bietet Updates zu „X-Men ’97“, „What If...“, „Daredevil“ und mehr.
Ava Gardner war mit Mickey Rooney und Frank Sintra verheiratet und datete mehrere andere Hollywoodstars. Hier ist ein Rückblick auf Ava Gardners Dating-Geschichte.
John Cleese heiratete seine Frau Jennifer Wade im Jahr 2012. Hier erfahren Sie alles Wissenswerte über John Cleeses Frau Jennifer Wade.
Iman und David Bowie bekamen im Jahr 2000 ihre Tochter Alexandria „Lexi“ Jones. Hier erfahren Sie alles Wissenswerte über ihre Tochter Alexandria „Lexi“ Jones.
Walker Scobell ist ein US-amerikanischer Schauspieler. Hier finden Sie alles, was Sie über den Star aus „Percy Jackson und die Olympier“ wissen müssen.
Es fällt mir plötzlich auf, wie so oft. Es ist wieder die Mitte. <Nein, nicht die im Pazifik, du Schlappschwanz, die auf dem Jahrmarkt> Jede Schlagzeile laut…..
 
                    Im Jahr 2022, mit der Veröffentlichung von GPT-3, scheinen Schreibfähigkeiten an Bedeutung zu verlieren. Mit KI können auch Menschen mit schlechten Schreibkenntnissen hochwertiges Personal hervorbringen.
 
                    In der heutigen schnelllebigen und wettbewerbsintensiven Welt spielt die Karriere eine wichtige Rolle für das persönliche Wachstum, die finanzielle Stabilität und die allgemeine Lebenszufriedenheit. Viele Menschen befinden sich jedoch in einem unerbittlichen Kreislauf aus Stagnation und Unzufriedenheit, der ihr Berufsleben allmählich verkümmert.
 
                    Letzte Woche fiel mir eine Pressemitteilung auf, die über PressGazette (eine britische Nachrichten-Website für Medien) verschickt wurde. In dem Artikel wurde angekündigt, dass Acast, das skandinavische Podcast-Hosting- und Werbeunternehmen, ein Konsortium der „wahrscheinlich einflussreichsten“ Verlage im Podcasting leiten werde.