Hi, I am trying to log into a web application using curl. The web app sends a 302 redirect after posting the data (successful log in - I can see the successful login in the web apps log files).
Maybe I am doing something wrong - but I have just copied the code of _basicHTTP form curl.d to my own method to authenticate. The exception I'll receive on perform is: std.net.curl.CurlException@std/net/curl.d(3348): Send failed since rewinding of the data stream failed on handle 7FCABA819400 My Code: void post(string url, const(void)[] sendData){ HTTP client = HTTP(); client.method = HTTP.Method.post; client.addRequestHeader("Content-Type","application/x-www-form-urlencoded"); scope (exit) { client.onReceiveHeader = null; client.onReceiveStatusLine = null; client.onReceive = null; } client.url = url; HTTP.StatusLine statusLine; ubyte[] content; string[string] headers; client.onReceive = (ubyte[] data) { content ~= data; return data.length; }; if (sendData !is null && (client.method == HTTP.Method.post || client.method == HTTP.Method.put)) { client.contentLength = sendData.length; client.onSend = delegate size_t(void[] buf) { size_t minLen = std.algorithm.min(buf.length, sendData.length); if (minLen == 0) return 0; buf[0..minLen] = sendData[0..minLen]; sendData = sendData[minLen..$]; return minLen; }; } client.onReceiveHeader = (in char[] key, in char[] value) { if (auto v = key in headers) { *v ~= ", "; *v ~= value; } else headers[key] = value.idup; }; client.onReceiveStatusLine = (HTTP.StatusLine l) { statusLine = l; }; client.perform(); // Default charset defined in HTTP RFC auto charset = "ISO-8859-1"; if (auto v = "content-type" in headers) { auto m = match(cast(char[]) (*v), regex("charset=([^;,]*)")); if (!m.empty && m.captures.length > 1) { charset = m.captures[1].idup; } } } Does anybody have a clue, what I am doing wrong? Thanks, Christian