0
我已經在某些庫中找到了一些代碼,我已經使用了,我想知道如何從選項中添加自定義標頭如何在粘貼的代碼中添加自定義標題?
。它應該從JS接收本地(Java)的東西。 我不擅長Java。任何幫助,將不勝感激。
這是它來自的存儲庫。 https://github.com/tranquangvu/react-native-uploader/
...
@ReactMethod
public void upload(ReadableMap options, Callback complete) {
final Callback completeCallback = complete;
try {
MultipartBody.Builder mRequestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM);
ReadableArray files = options.getArray("files");
String url = options.getString("url");
String method = options.getString("method");
if(options.hasKey("params")){
ReadableMap data = options.getMap("params");
ReadableMapKeySetIterator iterator = data.keySetIterator();
while(iterator.hasNextKey()){
String key = iterator.nextKey();
if(ReadableType.String.equals(data.getType(key))) {
mRequestBody.addFormDataPart(key, data.getString(key));
}
}
}
if(files.size() != 0){
for(int fileIndex=0 ; fileIndex<files.size(); fileIndex++){
ReadableMap file = files.getMap(fileIndex);
String uri = file.getString("filepath");
Uri file_uri;
if(uri.substring(0,10).equals("content://")){
file_uri = Uri.parse(convertMediaUriToPath(Uri.parse(uri)));
}
else{
file_uri = Uri.parse(uri);
}
File imageFile = new File(file_uri.getPath());
if(imageFile == null){
Log.d(TAG, "FILE NOT FOUND");
completeCallback.invoke("FILE NOT FOUND", null);
return;
}
String mimeType = "image/png";
if(file.hasKey("filetype")){
mimeType = file.getString("filetype");
}
MediaType mediaType = MediaType.parse(mimeType);
String fileName = file.getString("filename");
String name = fileName;
if(file.hasKey("name")){
name = file.getString("name");
}
mRequestBody.addFormDataPart(name, fileName, RequestBody.create(mediaType, imageFile));
}
}
MultipartBody requestBody = mRequestBody.build();
Request request;
// NOTE: The author seems added the header statically, I wonder how can I add a custom header.
if(method.equals("PUT")) {
request = new Request.Builder()
.header("Accept", "application/json")
.url(url)
.put(requestBody)
.build();
}
else{
request = new Request.Builder()
.header("Accept", "application/json")
.url(url)
.post(requestBody)
.build();
}
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) {
Log.d(TAG, "Unexpected code" + response);
completeCallback.invoke(response, null);
return;
}
completeCallback.invoke(null, response.body().string());
} catch(Exception e) {
Log.d(TAG, e.toString());
}
}
這將是作者把它staticall相同y,它會如何像params塊一樣完成,'if(options.hasKey(「params」)){'。它增加了循環來添加更多的鍵/值 – olanchuy