Fixed encoding problem for large images in TwoCaptcha and RuCaptcha classes.

This commit is contained in:
ruri
2019-05-10 18:40:01 +02:00
parent 413a99b7f9
commit 267ff8ed44
3 changed files with 16 additions and 2 deletions
+14
View File
@@ -186,5 +186,19 @@ namespace RuriLib.CaptchaServices
.Result.Content.ReadAsStreamAsync())
.Result;
}
/// <summary>
/// URL encodes a long string.
/// </summary>
/// <param name="longString">The string to encode</param>
/// <returns>The encoded string</returns>
protected string EscapeLongString(string longString)
{
var escaped = "";
int maxChunkSize = 200;
for (int i = 0; i < longString.Length; i += maxChunkSize)
escaped += Uri.EscapeDataString(longString.Substring(i, Math.Min(maxChunkSize, longString.Length - i)));
return escaped;
}
}
}
+1 -1
View File
@@ -67,7 +67,7 @@ namespace RuriLib.CaptchaServices
if (Timeout > 0) client.Timeout = Timeout;
client.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
var response = client.UploadString("http://rucaptcha.com/in.php",
$"key={ApiKey}&method=base64&regsense=1&body={Uri.EscapeDataString(GetBase64(bitmap, ImageFormat.Bmp))}");
$"key={ApiKey}&method=base64&regsense=1&body={EscapeLongString(GetBase64(bitmap, ImageFormat.Bmp))}");
if (!response.StartsWith("OK")) throw new Exception(response);
TaskId = response.Split('|')[1];
Status = CaptchaStatus.Processing;
+1 -1
View File
@@ -67,7 +67,7 @@ namespace RuriLib.CaptchaServices
if (Timeout > 0) client.Timeout = Timeout;
client.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
var response = client.UploadString("http://2captcha.com/in.php",
$"key={ApiKey}&method=base64&regsense=1&body={Uri.EscapeDataString(GetBase64(bitmap, ImageFormat.Bmp))}");
$"key={ApiKey}&method=base64&regsense=1&body={EscapeLongString(GetBase64(bitmap, ImageFormat.Bmp))}");
if (!response.StartsWith("OK")) throw new Exception(response);
TaskId = response.Split('|')[1];
Status = CaptchaStatus.Processing;