Skip to content

Commit 25a0a9a

Browse files
committed
fix: #372 [Bug] Android: malformed empty multipart requests
1 parent e44def0 commit 25a0a9a

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 3.1.1
4+
5+
- Fixed #372: malformed empty multipart request on Android
6+
37
## 3.1.0
48

59
- Feature #272: add support for aborting requests (thanks russaa)

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cordova-plugin-advanced-http",
3-
"version": "3.1.0",
3+
"version": "3.1.1",
44
"description": "Cordova / Phonegap plugin for communicating with HTTP servers using SSL pinning",
55
"scripts": {
66
"updatecert": "node ./scripts/update-e2e-server-cert.js && node ./scripts/update-e2e-client-cert.js",
@@ -66,4 +66,4 @@
6666
"wd": "1.12.1",
6767
"xml2js": "0.4.23"
6868
}
69-
}
69+
}

src/android/com/silkimen/cordovahttp/CordovaHttpBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ protected void setContentType(HttpRequest request) {
154154
} else if ("urlencoded".equals(this.serializer)) {
155155
// intentionally left blank, because content type is set in HttpRequest.form()
156156
} else if ("multipart".equals(this.serializer)) {
157-
request.contentType("multipart/form-data");
157+
// intentionally left blank, because content type is set in HttpRequest.part()
158158
}
159159
}
160160

test/e2e-specs.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,6 +1109,25 @@ const tests = [
11091109
result.data.status.should.be.equal(-8);
11101110
}
11111111
},
1112+
{
1113+
description: 'should not send malformed request when FormData is empty #372',
1114+
expected: 'resolved: {"status":200, ...',
1115+
before: helpers.setMultipartSerializer,
1116+
func: function (resolve, reject) {
1117+
var ponyfills = cordova.plugin.http.ponyfills;
1118+
var formData = new ponyfills.FormData();
1119+
1120+
var url = 'http://httpbin.org/anything';
1121+
var options = { method: 'post', data: formData };
1122+
cordova.plugin.http.sendRequest(url, options, resolve, reject);
1123+
},
1124+
validationFunc: function (driver, result) {
1125+
helpers.checkResult(result, 'resolved');
1126+
1127+
var parsed = JSON.parse(result.data.data);
1128+
parsed.headers['Content-Type'].should.be.equal('application/x-www-form-urlencoded');
1129+
}
1130+
},
11121131
];
11131132

11141133
if (typeof module !== 'undefined' && module.exports) {

0 commit comments

Comments
 (0)