Merge branch 'jetty-9.4.x-1027-Multipart' of github.com:eclipse/jetty.project into jetty-9.4.x-1027-Multipart
This commit is contained in:
commit
6528b79fbd
|
@ -28,7 +28,6 @@ import java.io.BufferedReader;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.security.DigestOutputStream;
|
||||
|
@ -46,7 +45,6 @@ import javax.servlet.http.Part;
|
|||
import org.eclipse.jetty.toolchain.test.Hex;
|
||||
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
||||
import org.eclipse.jetty.toolchain.test.TestingDir;
|
||||
import org.eclipse.jetty.util.BufferUtil;
|
||||
import org.eclipse.jetty.util.IO;
|
||||
import org.eclipse.jetty.util.QuotedStringTokenizer;
|
||||
import org.eclipse.jetty.util.StringUtil;
|
||||
|
@ -60,8 +58,8 @@ import org.junit.runners.Parameterized;
|
|||
public class MultiPartCaptureTest
|
||||
{
|
||||
|
||||
public static final int MAX_FILE_SIZE = 60 * 1024;
|
||||
public static final int MAX_REQUEST_SIZE = 1024 * 1024;
|
||||
public static final int MAX_FILE_SIZE = 2 * 1024 * 1024;
|
||||
public static final int MAX_REQUEST_SIZE = MAX_FILE_SIZE + (60 * 1024);
|
||||
public static final int FILE_SIZE_THRESHOLD = 50;
|
||||
|
||||
@Parameterized.Parameters(name = "{0}")
|
||||
|
@ -69,25 +67,41 @@ public class MultiPartCaptureTest
|
|||
{
|
||||
List<Object[]> ret = new ArrayList<>();
|
||||
|
||||
// Capture of raw request body contents from Apache HttpComponents 4.5.5
|
||||
ret.add(new String[]{"multipart-text-files"});
|
||||
// == Arbitrary / Non-Standard Examples ==
|
||||
|
||||
ret.add(new String[]{"multipart-uppercase"});
|
||||
// ret.add(new String[]{"multipart-base64"}); // base64 transfer encoding deprecated
|
||||
// ret.add(new String[]{"multipart-base64-long"}); // base64 transfer encoding deprecated
|
||||
// ret.add(new String[]{"multipart-complex"}); // TODO joakime bad capture includes ? in sjis content
|
||||
ret.add(new String[]{"multipart-duplicate-names-1"});
|
||||
ret.add(new String[]{"multipart-encoding-mess"});
|
||||
// ret.add(new String[]{"multipart-inside-itself"}); // impossible test, badly chosen boundary
|
||||
// ret.add(new String[]{"multipart-inside-itself-binary"}); // impossible test, badly chosen boundary
|
||||
ret.add(new String[]{"multipart-number-browser"});
|
||||
ret.add(new String[]{"multipart-number-strict"});
|
||||
// ret.add(new String[]{"multipart-sjis"}); // TODO joakime bad capture includes ? in sjis content
|
||||
ret.add(new String[]{"multipart-strange-quoting"});
|
||||
ret.add(new String[]{"multipart-unicode-names"});
|
||||
ret.add(new String[]{"multipart-uppercase"});
|
||||
// ret.add(new String[]{"multipart-x-www-form-urlencoded"}); // not our job to decode content
|
||||
ret.add(new String[]{"multipart-zencoding"});
|
||||
|
||||
// Capture of raw request body contents from various browsers
|
||||
// == Capture of raw request body contents from Apache HttpClient 4.5.5 ==
|
||||
|
||||
ret.add(new String[]{"browser-capture-company-urlencoded-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-complex-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-duplicate-names-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-encoding-mess-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-nested-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-nested-binary-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-number-only2-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-number-only-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-sjis-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-strange-quoting-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-text-files-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-unicode-names-apache-httpcomp"});
|
||||
ret.add(new String[]{"browser-capture-zalgo-text-plain-apache-httpcomp"});
|
||||
|
||||
// == Capture of raw request body contents from Eclipse Jetty Http Client 9.4.9 ==
|
||||
|
||||
ret.add(new String[]{"browser-capture-complex-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-duplicate-names-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-encoding-mess-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-nested-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-number-only-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-sjis-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-text-files-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-unicode-names-jetty-client"});
|
||||
ret.add(new String[]{"browser-capture-whitespace-only-jetty-client"});
|
||||
|
||||
// == Capture of raw request body contents from various browsers ==
|
||||
|
||||
// simple form - 2 fields
|
||||
ret.add(new String[]{"browser-capture-form1-android-chrome"});
|
||||
|
@ -100,13 +114,14 @@ public class MultiPartCaptureTest
|
|||
ret.add(new String[]{"browser-capture-form1-osx-safari"});
|
||||
|
||||
// form submitted as shift-jis
|
||||
ret.add(new String[]{"browser-capture-sjis-form-edge"});
|
||||
ret.add(new String[]{"browser-capture-sjis-form-msie"});
|
||||
// TODO: these might be addressable via Issue #2398
|
||||
// ret.add(new String[]{"browser-capture-sjis-form-android-chrome"}); // contains html encoded character and unspecified charset defaults to utf-8
|
||||
// ret.add(new String[]{"browser-capture-sjis-form-android-firefox"}); // contains html encoded character and unspecified charset defaults to utf-8
|
||||
// ret.add(new String[]{"browser-capture-sjis-form-chrome"}); // contains html encoded character and unspecified charset defaults to utf-8
|
||||
ret.add(new String[]{"browser-capture-sjis-form-edge"});
|
||||
// ret.add(new String[]{"browser-capture-sjis-form-firefox"}); // contains html encoded character and unspecified charset defaults to utf-8
|
||||
// ret.add(new String[]{"browser-capture-sjis-form-ios-safari"}); // contains html encoded character and unspecified charset defaults to utf-8
|
||||
ret.add(new String[]{"browser-capture-sjis-form-msie"});
|
||||
// ret.add(new String[]{"browser-capture-sjis-form-safari"}); // contains html encoded character and unspecified charset defaults to utf-8
|
||||
|
||||
// form submitted as shift-jis (with HTML5 specific hidden _charset_ field)
|
||||
|
@ -133,7 +148,6 @@ public class MultiPartCaptureTest
|
|||
ret.add(new String[]{"browser-capture-form-fileupload-alt-chrome"});
|
||||
ret.add(new String[]{"browser-capture-form-fileupload-alt-edge"});
|
||||
ret.add(new String[]{"browser-capture-form-fileupload-alt-firefox"});
|
||||
// ret.add(new String[]{"browser-capture-form-fileupload-alt-ios-safari"}); // is Sha1sum correct new parser gives same result as old parser
|
||||
ret.add(new String[]{"browser-capture-form-fileupload-alt-msie"});
|
||||
ret.add(new String[]{"browser-capture-form-fileupload-alt-safari"});
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
Request-Header|Accept-Encoding|gzip,deflate
|
||||
Request-Header|Connection|keep-alive
|
||||
Request-Header|Content-Length|248
|
||||
Request-Header|Content-Type|multipart/form-data; boundary=DHbU6ChASebwm4iE8z9Lakv4ybMmkp
|
||||
Request-Header|Host|localhost:9090
|
||||
Request-Header|User-Agent|Apache-HttpClient/4.5.5 (Java/1.8.0_162)
|
||||
Request-Header|X-BrowserId|apache-httpcomp
|
||||
Parts-Count|1
|
||||
Part-ContainsContents|company|bob+%26+frank%27s+shoe+repair
|
|
@ -1,7 +1,7 @@
|
|||
--qjIkwQOhaYfC2VEcL5j-9sjEK1FIsYMd5
|
||||
--DHbU6ChASebwm4iE8z9Lakv4ybMmkp
|
||||
Content-Disposition: form-data; name="company"
|
||||
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
bob+%26+frank%27s+shoe+repair
|
||||
--qjIkwQOhaYfC2VEcL5j-9sjEK1FIsYMd5--
|
||||
--DHbU6ChASebwm4iE8z9Lakv4ybMmkp--
|
|
@ -0,0 +1,15 @@
|
|||
Request-Header|Accept-Encoding|gzip,deflate
|
||||
Request-Header|Connection|keep-alive
|
||||
Request-Header|Content-Length|22940
|
||||
Request-Header|Content-Type|multipart/form-data; boundary=owr6UQGvVNunA_sx2AsizBtyq_uK-OjsQXrF
|
||||
Request-Header|Host|localhost:9090
|
||||
Request-Header|User-Agent|Apache-HttpClient/4.5.5 (Java/1.8.0_162)
|
||||
Request-Header|X-BrowserId|apache-httpcomp
|
||||
Parts-Count|6
|
||||
Part-ContainsContents|pi|3.14159265358979323846264338327950288419716939937510
|
||||
Part-ContainsContents|company|bob & frank's shoe repair
|
||||
Part-ContainsContents|power|ꬵо𝗋ⲥ𝖾
|
||||
Part-ContainsContents|japanese|オープンソース
|
||||
Part-ContainsContents|hello|日食桟橋
|
||||
Part-Filename|upload_file|filename
|
||||
Part-Sha1sum|upload_file|e75b73644afe9b234d70da9ff225229de68cdff8
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
Request-Header|Accept-Encoding|gzip
|
||||
Request-Header|Connection|close
|
||||
Request-Header|Content-Type|multipart/form-data; boundary=JettyHttpClientBoundary1275gffetpxz8o0q
|
||||
Request-Header|Host|localhost:9090
|
||||
Request-Header|Transfer-Encoding|chunked
|
||||
Request-Header|User-Agent|Jetty/9.4.9.v20180320
|
||||
Request-Header|X-BrowserId|jetty-client
|
||||
Parts-Count|6
|
||||
Part-ContainsContents|pi|3.14159265358979323846264338327950288419716939937510
|
||||
Part-ContainsContents|company|bob & frank's shoe repair
|
||||
Part-ContainsContents|power|ꬵо𝗋ⲥ𝖾
|
||||
Part-ContainsContents|japanese|オープンソース
|
||||
Part-ContainsContents|hello|日食桟橋
|
||||
Part-Filename|upload_file|filename
|
||||
Part-Sha1sum|upload_file|e75b73644afe9b234d70da9ff225229de68cdff8
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
|||
Request-Header|Accept-Encoding|gzip,deflate
|
||||
Request-Header|Connection|keep-alive
|
||||
Request-Header|Content-Length|1815
|
||||
Request-Header|Content-Type|multipart/form-data; boundary=QW3F8Fg64P2J2dpfEKGKlX0Q9QF2a8SK_7YH
|
||||
Request-Header|Host|localhost:9090
|
||||
Request-Header|User-Agent|Apache-HttpClient/4.5.5 (Java/1.8.0_162)
|
||||
Request-Header|X-BrowserId|apache-httpcomp
|
||||
Parts-Count|10
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
|||
Request-Header|Accept-Encoding|gzip
|
||||
Request-Header|Connection|close
|
||||
Request-Header|Content-Type|multipart/form-data; boundary=JettyHttpClientBoundary14beb4to333d91v8
|
||||
Request-Header|Host|localhost:9090
|
||||
Request-Header|Transfer-Encoding|chunked
|
||||
Request-Header|User-Agent|Jetty/9.4.9.v20180320
|
||||
Request-Header|X-BrowserId|jetty-client
|
||||
Parts-Count|10
|
|
@ -0,0 +1,51 @@
|
|||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="pi"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
3.14159265358979323846264338327950288419716939937510
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="pi"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
3.14159
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="pi"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
3
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="pi"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
π
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="pi"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
π
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="pi"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
%CF%80
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="pi"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
π = C/d
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="π"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
3.14
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="%CF%80"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
Approximately 3.14
|
||||
--JettyHttpClientBoundary14beb4to333d91v8
|
||||
Content-Disposition: form-data; name="%FE%FF%03%C0"
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
Approximately 3.14
|
||||
--JettyHttpClientBoundary14beb4to333d91v8--
|
|
@ -0,0 +1,11 @@
|
|||
Request-Header|Accept-Encoding|gzip,deflate
|
||||
Request-Header|Connection|keep-alive
|
||||
Request-Header|Content-Length|31148
|
||||
Request-Header|Content-Type|multipart/form-data; boundary=qqr2YBBR31U4xVib4vaVuIsrwNY1iw
|
||||
Request-Header|Host|localhost:9090
|
||||
Request-Header|User-Agent|Apache-HttpClient/4.5.5 (Java/1.8.0_162)
|
||||
Request-Header|X-BrowserId|apache-httpcomp
|
||||
Parts-Count|169
|
||||
Part-ContainsContents|count|168
|
||||
Part-ContainsContents|persian-UTF-8|برج بابل
|
||||
Part-ContainsContents|persian-CESU-8|برج بابل
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,11 @@
|
|||
Request-Header|Accept-Encoding|gzip
|
||||
Request-Header|Connection|close
|
||||
Request-Header|Content-Type|multipart/form-data; boundary=JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Request-Header|Host|localhost:9090
|
||||
Request-Header|Transfer-Encoding|chunked
|
||||
Request-Header|User-Agent|Jetty/9.4.9.v20180320
|
||||
Request-Header|X-BrowserId|jetty-client
|
||||
Parts-Count|169
|
||||
Part-ContainsContents|count|168
|
||||
Part-ContainsContents|persian-UTF-8|برج بابل
|
||||
Part-ContainsContents|persian-CESU-8|برج بابل
|
|
@ -0,0 +1,846 @@
|
|||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-Big5"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-Big5-HKSCS"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-CESU-8"
|
||||
Content-Type: text/plain
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-EUC-JP"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-EUC-KR"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-GB18030"
|
||||
Content-Type: text/plain
|
||||
|
||||
<EFBFBD>1<EFBFBD>0<EFBFBD>1<EFBFBD>9<EFBFBD>1<EFBFBD>4 <20>1<EFBFBD>0<EFBFBD>1<EFBFBD>9<EFBFBD>1<EFBFBD>0<EFBFBD>1<EFBFBD>8
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-GB2312"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-GBK"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM-Thai"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM00858"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01140"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01141"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01142"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01143"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01144"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01145"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01146"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01147"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01148"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM01149"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM037"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM1026"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM1047"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM273"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM277"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM278"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM280"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM284"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM285"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM290"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM297"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM420"
|
||||
Content-Type: text/plain
|
||||
|
||||
Xug@XVX<56>
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM424"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM437"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM500"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM775"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM850"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM852"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM855"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM857"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM860"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM861"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM862"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM863"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM864"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM865"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM866"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM868"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM869"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM870"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM871"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-IBM918"
|
||||
Content-Type: text/plain
|
||||
|
||||
???@????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-2022-JP"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-2022-JP-2"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-2022-KR"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-1"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-13"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-15"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-2"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-3"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-4"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-5"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-6"
|
||||
Content-Type: text/plain
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-7"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-8"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-ISO-8859-9"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-JIS_X0201"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-JIS_X0212-1990"
|
||||
Content-Type: text/plain
|
||||
|
||||
"D"D"D"D"D"D"D"D
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-KOI8-R"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-KOI8-U"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-Shift_JIS"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-TIS-620"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-US-ASCII"
|
||||
Content-Type: text/plain
|
||||
|
||||
??? ????
|
||||
--JettyHttpClientBoundary1jcfdl0zps9nf362
|
||||
Content-Disposition: form-data; name="persian-UTF-16"
|
||||
Content-Type: text/plain
|
||||
|
||||
<EFBFBD><EFBFBD>(1, |