Skip to content

Commit 38513f7

Browse files
huntiemeta-codesync[bot]
authored andcommitted
Fix multipart/form-data request payload previews on Android (#54804)
Summary: Pull Request resolved: #54804 Resolves #54796 (comment). Fixes a bug where for `multipart/form-data` requests on Android, request payload previews were not using a correctly serialized preview string in React Native DevTools. Changelog: [Internal] Reviewed By: vzaidman Differential Revision: D88495615 fbshipit-source-id: 757487b3588372404fa45f980e0bcfae5c7c6457
1 parent 2efa274 commit 38513f7

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ internal object NetworkEventUtil {
3535
request.url().toString(),
3636
request.method(),
3737
headersMap,
38-
request.body()?.toString().orEmpty(),
38+
(request.body() as? ProgressRequestBody)?.getBodyPreview()
39+
?: request.body()?.toString().orEmpty(),
3940
request.body()?.contentLength() ?: 0,
4041
)
4142
InspectorNetworkReporter.reportConnectionTiming(devToolsRequestId, headersMap)

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ internal class ProgressRequestBody(
2323
) : RequestBody() {
2424
private var contentLength = 0L
2525

26+
companion object {
27+
private const val MAX_BODY_PREVIEW_SIZE = 1024 * 1024 // 1MB
28+
}
29+
2630
override fun contentType(): MediaType? {
2731
return requestBody.contentType()
2832
}
@@ -78,4 +82,20 @@ internal class ProgressRequestBody(
7882
}
7983
)
8084
}
85+
86+
fun getBodyPreview(): String {
87+
return try {
88+
val buffer = okio.Buffer()
89+
requestBody.writeTo(buffer)
90+
val size = buffer.size()
91+
if (size <= MAX_BODY_PREVIEW_SIZE) {
92+
buffer.readUtf8()
93+
} else {
94+
buffer.readUtf8(MAX_BODY_PREVIEW_SIZE.toLong()) +
95+
"\n... [truncated, showing $MAX_BODY_PREVIEW_SIZE of $size bytes]"
96+
}
97+
} catch (e: Exception) {
98+
""
99+
}
100+
}
81101
}

0 commit comments

Comments
 (0)