问:
App Distribution halted because it had a problem uploading the APK: Error writing request body to server
I created and configured Firebase App Distribution project. Also added firebaseAppDistribution in Gradle. And when run:

```<code>./gradlew assembleDebug appDistributionUploadDebug
</code>```

I get App Distribution halted because it had a problem uploading the APK: Error writing request body to server(below I've deleted the extra request fields):

```<code>> Task :app:appDistributionUploadDebug
Caching disabled for task ':app:appDistributionUploadDebug' because:
  Build cache is disabled
Task ':app:appDistributionUploadDebug' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
The apkPath parameter is deprecated. Please use artifactPath.
Using APK path specified by the apkPath parameter in your app's build.gradle: /build/outputs/apk/debug/app-universal-debug.apk.
Uploading APK to Firebase App Distribution...
Getting appId from output of google services plugin
Using service credentials file specified by the serviceCredentialsFile property in your app's build.gradle file: hereMyFile.json
-------------- REQUEST  --------------
POST oauth2.googleapis.com/token
-------------- RESPONSE --------------
HTTP/1.1 200 OK

Total: 1 083 bytes
{"access_token":"MyAccessToken","expires_in":3599,"token_type":"Bearer"}
-------------- REQUEST  --------------
GET firebaseappdistribution.googleapis.com/v1alpha/apps/app_view=BASIC

-------------- RESPONSE --------------
HTTP/1.1 200 OK

Total: 220 bytes
{
  "projectNumber": "myprojectNumber",
  "appId": "myappId",
  "platform": "android",
  "bundleId": "mybundleId",
  "contactEmail": "myEmail@gmail.com"
}
-------------- REQUEST  --------------
GET firebaseappdistribution.googleapis.com/v1alpha/apps/

-------------- RESPONSE --------------
HTTP/1.1 200 OK

Total: 88 bytes
{
  "status": "ERROR",
  "release": {
    "distributedAt": "1970-01-01T00:00:00Z"
  }
}

This APK has not been uploaded before.
Uploading the APK.
-------------- REQUEST  --------------
POST firebaseappdistribution.googleapis.com/app-binary-uploads
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: Firebase App Distro Client/2.1.3
x-goog-upload-file-name: app-universal-debug.apk
x-goog-upload-protocol: raw
x-app-distro-api-client-id: appdistribution-gradle
x-app-distro-api-client-type: gradle
x-app-distro-api-client-version: 2.1.3
Content-Type: application/octet-stream
Content-Length: 63232973

'firebaseappdistribution.googleapis.com/app-binary-uploads?' << $$$
Total: 139 264 bytes (logging first 16 384 bytes)
PK        ! !               f                                                                                PK        ! ! �� �2   8   9   META-INF/com/android/build/gradle/app-metadata.propert���qx���Q>��Xi|�, �v�3'���WŊ�:Q���ߟ�!  D�,���5 >  t � 5c �? A�Jq��? A�JI����

> Task :app:appDistributionUploadDebug FAILED
:app:appDistributionUploadDebug (Thread[Daemon worker Thread 7,5,main]) completed. Took 2.925 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:appDistributionUploadDebug'.
> App Distribution halted because it had a problem uploading the APK: Error writing request body to server
</code>```

I added stacktrace below:

``` Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:appDistributionUploadDebug'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:145)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:143)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: org.gradle.api.GradleException: App Distribution halted because it had a problem uploading the APK: Error writing request body to server
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at com.google.firebase.appdistribution.gradle.UploadDistributionTask.runAppDistributionWrappingExceptions(UploadDistributionTask.groovy:98)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at com.google.firebase.appdistribution.gradle.UploadDistributionTask.uploadDistribution(UploadDistributionTask.groovy:63)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
        at org.gradle.api.internal.tasks.execution.TaskExecution$2.run(TaskExecution.java:239)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:224)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:207)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:190)
        at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:168)
        at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
        at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
        at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:188)
        at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
        at org.gradle.internal.Either$Right.fold(Either.java:175)
        at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:38)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:27)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:109)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:93)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:93)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
        at org.gradle.api.internal.tasks.execution.TaskExecution$3.withWorkspace(TaskExecution.java:284)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
        at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:142)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: com.google.firebase.appdistribution.AppDistributionException: App Distribution halted because it had a problem uploading the APK: Error writing request body to server
        at com.google.firebase.appdistribution.AppDistributionException.fromIoException(AppDistributionException.java:115)
        at com.google.firebase.appdistribution.FirebaseAppDistributionUpload.uploadDistribution(FirebaseAppDistributionUpload.java:84)
        at com.google.firebase.appdistribution.FirebaseAppDistribution.run(FirebaseAppDistribution.java:78)
        at com.google.firebase.appdistribution.FirebaseAppDistribution$run.call(Unknown Source)
        at com.google.firebase.appdistribution.gradle.UploadDistributionTask.runAppDistributionWrappingExceptions(UploadDistributionTask.groovy:71)
        ... 122 more
Caused by: java.io.IOException: Error writing request body to server
        at com.google.api.client.util.ByteStreams.copy(ByteStreams.java:53)
        at com.google.api.client.util.IOUtils.copy(IOUtils.java:87)
        at com.google.api.client.http.AbstractInputStreamContent.writeTo(AbstractInputStreamContent.java:67)
        at com.google.api.client.http.javanet.NetHttpRequest$DefaultOutputWriter.write(NetHttpRequest.java:76)
        at com.google.api.client.http.javanet.NetHttpRequest.writeContentToOutputStream(NetHttpRequest.java:171)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:117)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84)
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)
        at com.google.firebase.appdistribution.RequestBuilder.execute(RequestBuilder.java:60)
        at com.google.firebase.appdistribution.UploadService.uploadDistribution(UploadService.java:41)
        at com.google.firebase.appdistribution.FirebaseAppDistributionUpload.uploadDistribution(FirebaseAppDistributionUpload.java:79)
        ... 125 more
```

I can't figure out what the problem might be

Body:
I created and configured Firebase App Distribution project. Also added firebaseAppDistribution in Gradle. And when run:

./gradlew assembleDebug appDistributionUploadDebug

I get App Distribution halted because it had a problem uploading the APK: Error writing request body to server(below I've deleted the extra request fields):

> Task :app:appDistributionUploadDebug
Caching disabled for task ':app:appDistributionUploadDebug' because:
  Build cache is disabled
Task ':app:appDistributionUploadDebug' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
The apkPath parameter is deprecated. Please use artifactPath.
Using APK path specified by the apkPath parameter in your app's build.gradle: /build/outputs/apk/debug/app-universal-debug.apk.
Uploading APK to Firebase App Distribution...
Getting appId from output of google services plugin
Using service credentials file specified by the serviceCredentialsFile property in your app's build.gradle file: hereMyFile.json
-------------- REQUEST  --------------
POST oauth2.googleapis.com/token
-------------- RESPONSE --------------
HTTP/1.1 200 OK

Total: 1 083 bytes
{"access_token":"MyAccessToken","expires_in":3599,"token_type":"Bearer"}
-------------- REQUEST  --------------
GET firebaseappdistribution.googleapis.com/v1alpha/apps/app_view=BASIC

-------------- RESPONSE --------------
HTTP/1.1 200 OK

Total: 220 bytes
{
  "projectNumber": "myprojectNumber",
  "appId": "myappId",
  "platform": "android",
  "bundleId": "mybundleId",
  "contactEmail": "myEmail@gmail.com"
}
-------------- REQUEST  --------------
GET firebaseappdistribution.googleapis.com/v1alpha/apps/

-------------- RESPONSE --------------
HTTP/1.1 200 OK

Total: 88 bytes
{
  "status": "ERROR",
  "release": {
    "distributedAt": "1970-01-01T00:00:00Z"
  }
}

This APK has not been uploaded before.
Uploading the APK.
-------------- REQUEST  --------------
POST firebaseappdistribution.googleapis.com/app-binary-uploads
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: Firebase App Distro Client/2.1.3
x-goog-upload-file-name: app-universal-debug.apk
x-goog-upload-protocol: raw
x-app-distro-api-client-id: appdistribution-gradle
x-app-distro-api-client-type: gradle
x-app-distro-api-client-version: 2.1.3
Content-Type: application/octet-stream
Content-Length: 63232973

'firebaseappdistribution.googleapis.com/app-binary-uploads?' << $$$
Total: 139 264 bytes (logging first 16 384 bytes)
PK        ! !               f                                                                                PK        ! ! �� �2   8   9   META-INF/com/android/build/gradle/app-metadata.propert���qx���Q>��Xi|�, �v�3'���WŊ�:Q���ߟ�!  D�,���5 >  t � 5c �? A�Jq��? A�JI����

> Task :app:appDistributionUploadDebug FAILED
:app:appDistributionUploadDebug (Thread[Daemon worker Thread 7,5,main]) completed. Took 2.925 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:appDistributionUploadDebug'.
> App Distribution halted because it had a problem uploading the APK: Error writing request body to server

I added stacktrace below:

 Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:appDistributionUploadDebug'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:145)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:143)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: org.gradle.api.GradleException: App Distribution halted because it had a problem uploading the APK: Error writing request body to server
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at com.google.firebase.appdistribution.gradle.UploadDistributionTask.runAppDistributionWrappingExceptions(UploadDistributionTask.groovy:98)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at com.google.firebase.appdistribution.gradle.UploadDistributionTask.uploadDistribution(UploadDistributionTask.groovy:63)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
        at org.gradle.api.internal.tasks.execution.TaskExecution$2.run(TaskExecution.java:239)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:224)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:207)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:190)
        at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:168)
        at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
        at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
        at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:188)
        at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
        at org.gradle.internal.Either$Right.fold(Either.java:175)
        at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:38)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:27)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:109)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:93)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:93)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
        at org.gradle.api.internal.tasks.execution.TaskExecution$3.withWorkspace(TaskExecution.java:284)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
        at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:142)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: com.google.firebase.appdistribution.AppDistributionException: App Distribution halted because it had a problem uploading the APK: Error writing request body to server
        at com.google.firebase.appdistribution.AppDistributionException.fromIoException(AppDistributionException.java:115)
        at com.google.firebase.appdistribution.FirebaseAppDistributionUpload.uploadDistribution(FirebaseAppDistributionUpload.java:84)
        at com.google.firebase.appdistribution.FirebaseAppDistribution.run(FirebaseAppDistribution.java:78)
        at com.google.firebase.appdistribution.FirebaseAppDistribution$run.call(Unknown Source)
        at com.google.firebase.appdistribution.gradle.UploadDistributionTask.runAppDistributionWrappingExceptions(UploadDistributionTask.groovy:71)
        ... 122 more
Caused by: java.io.IOException: Error writing request body to server
        at com.google.api.client.util.ByteStreams.copy(ByteStreams.java:53)
        at com.google.api.client.util.IOUtils.copy(IOUtils.java:87)
        at com.google.api.client.http.AbstractInputStreamContent.writeTo(AbstractInputStreamContent.java:67)
        at com.google.api.client.http.javanet.NetHttpRequest$DefaultOutputWriter.write(NetHttpRequest.java:76)
        at com.google.api.client.http.javanet.NetHttpRequest.writeContentToOutputStream(NetHttpRequest.java:171)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:117)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84)
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)
        at com.google.firebase.appdistribution.RequestBuilder.execute(RequestBuilder.java:60)
        at com.google.firebase.appdistribution.UploadService.uploadDistribution(UploadService.java:41)
        at com.google.firebase.appdistribution.FirebaseAppDistributionUpload.uploadDistribution(FirebaseAppDistributionUpload.java:79)
        ... 125 more

I can't figure out what the problem might be


来源: stackexchange

问:
Python change ip twice a day at certain time with schedule module, closing prompt
I want my computer to switch between 2 different IP configuration, everyday at two different time. I figured i could automate this with a python script.

```<code>import sys

sys.path.append(r"c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.10_qbz5n2kfra8p0\localcache\local-packages\python310\site-packages")

import os
import ipaddress
import socket
import time
import schedule

def firstIP():
    hn = socket.gethostname()
    ipa = socket.gethostbyname(hn)
    print("Current IP: ",ipa)
    os.system('netsh interface ip set address name="Wi-Fi" static 192.168.1.20 255.255.255.0 192.168.1.1')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.8.8')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.4.4 index=2')
    print("IP ADRESS CHANGED!")

def secondIP():
    hn = socket.gethostname()
    ipa = socket.gethostbyname(hn)
    print("Current IP: ",ipa)
    os.system('netsh interface ip set address name="Wi-Fi" static 192.168.1.50 255.255.255.0 192.168.1.1')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.8.8')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.4.4 index=2')
    print("IP ADRESS CHANGED!")

schedule.every().day.at("01:00").do(firstIP)
schedule.every().day.at("15:00").do(secondIP)

while True:
    schedule.run_pending()
    time.sleep(1)

</code>```

I made this script and it seems to work, but for it to run i need to:

open cmd and run the script

leave the cmd open with the script running

is there a way for running the script once, closing the cmd window and the schedule will still work? as a sort of os chron job? or something similar, without leaving the prompt open?

Thank you

ContentLicense: CC BY-SA 4.0

Body:
I want my computer to switch between 2 different IP configuration, everyday at two different time. I figured i could automate this with a python script.

import sys

sys.path.append(r"c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.10_qbz5n2kfra8p0\localcache\local-packages\python310\site-packages")

import os
import ipaddress
import socket
import time
import schedule

def firstIP():
    hn = socket.gethostname()
    ipa = socket.gethostbyname(hn)
    print("Current IP: ",ipa)
    os.system('netsh interface ip set address name="Wi-Fi" static 192.168.1.20 255.255.255.0 192.168.1.1')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.8.8')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.4.4 index=2')
    print("IP ADRESS CHANGED!")

def secondIP():
    hn = socket.gethostname()
    ipa = socket.gethostbyname(hn)
    print("Current IP: ",ipa)
    os.system('netsh interface ip set address name="Wi-Fi" static 192.168.1.50 255.255.255.0 192.168.1.1')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.8.8')
    os.system('netsh interface ip set dns name="Wi-Fi" static 8.8.4.4 index=2')
    print("IP ADRESS CHANGED!")

schedule.every().day.at("01:00").do(firstIP)
schedule.every().day.at("15:00").do(secondIP)

while True:
    schedule.run_pending()
    time.sleep(1)

I made this script and it seems to work, but for it to run i need to:

open cmd and run the script

leave the cmd open with the script running

is there a way for running the script once, closing the cmd window and the schedule will still work? as a sort of os chron job? or something similar, without leaving the prompt open?

Thank you


问:
Teradata Query optimization - INDEX and COLLECT STATISTICS
I'm trying to create a SPROC and I am running into a spool space issue. My IT has confirmed I'm at max.

I can see where my query fails - it is at a place where I am trying to grab over 10m rows of data and do some various case statements, etc. then insert them into a separate table. Apologies for the anonymity but I can't show the real column headers.

How can I use INDEX or COLLECT STATISTICS after an INSERT INTO XYZ.Table statement to optimize this query?

```<code>INSERT INTO XYZ.TableFinal
SEL
b.Column1,
b.Column2,
b.Column3,
b.Column4,
b.Column5,
b.Column6,
CASE WHEN b.Column7 = 'A' THEN 'A1'
    WHEN b.Column7  = 'B' THEN 'B1'
    WHEN b.Column7 = 'C' THEN 'C1'
ELSE NULL end AS Column7,
b.Column8,
CASE WHEN b.Column9 = 'AA' THEN 100
          WHEN b.Column9 = 'BB' THEN 200
          WHEN b.Column9 = 'CC' THEN 300
          ELSE 400 end AS Column9,
a.Column10
FROM Table1 a -----This table has millions upon millions of rows
JOIN Table2 b
ON a.Column1 = b.Column1
AND a.Column2 = b.Column2
AND a.Column3 = b.Column3
WHERE  Column3>0 AND Column2 > 0 ----This helps narrow it down a bit, but I still need to pull and analyze 10m+ rows before aggregating them in the following queries.
;
</code>```

I attempted to create an index prior to the select along with collecting stats on the tables, but did not have any success.

Body:
I'm trying to create a SPROC and I am running into a spool space issue. My IT has confirmed I'm at max.

I can see where my query fails - it is at a place where I am trying to grab over 10m rows of data and do some various case statements, etc. then insert them into a separate table. Apologies for the anonymity but I can't show the real column headers.

How can I use INDEX or COLLECT STATISTICS after an INSERT INTO XYZ.Table statement to optimize this query?

INSERT INTO XYZ.TableFinal
SEL
b.Column1,
b.Column2,
b.Column3,
b.Column4,
b.Column5,
b.Column6,
CASE WHEN b.Column7 = 'A' THEN 'A1'
    WHEN b.Column7  = 'B' THEN 'B1'
    WHEN b.Column7 = 'C' THEN 'C1'
ELSE NULL end AS Column7,
b.Column8,
CASE WHEN b.Column9 = 'AA' THEN 100
          WHEN b.Column9 = 'BB' THEN 200
          WHEN b.Column9 = 'CC' THEN 300
          ELSE 400 end AS Column9,
a.Column10
FROM Table1 a -----This table has millions upon millions of rows
JOIN Table2 b
ON a.Column1 = b.Column1
AND a.Column2 = b.Column2
AND a.Column3 = b.Column3
WHERE  Column3>0 AND Column2 > 0 ----This helps narrow it down a bit, but I still need to pull and analyze 10m+ rows before aggregating them in the following queries.
;

I attempted to create an index prior to the select along with collecting stats on the tables, but did not have any success.


问:
Angular / Javascript - copy html for email
What is the best way to copy HTML to a clipboard, so that the user can copy it prettified to Email clients (at least outlook)?

I have an Angular app running which uses Angular Materials Clipboard module to copy content to the clipboard:

```<code>import { Clipboard } from '@angular/cdk/clipboard';

constructor(private clipboard: Clipboard) { }

copy(): void {
  const content = document.getElementById('copy-field');
  this.clipboard.copy(pretty(content!.innerHTML));
}
</code>```

I understand that I copy HTML code. So after copy(), I paste raw HTML. Is there any way to render this HTML code before copying it? Or can I use the rendered code directly?

What do I want to achieve?

The user should be able to copy everything to his/her email client. For example, an image with text should be displayed like in the browser. But my current solution displays the HTML (...).

Body:
What is the best way to copy HTML to a clipboard, so that the user can copy it prettified to Email clients (at least outlook)?

I have an Angular app running which uses Angular Materials Clipboard module to copy content to the clipboard:

import { Clipboard } from '@angular/cdk/clipboard';

constructor(private clipboard: Clipboard) { }

copy(): void {
  const content = document.getElementById('copy-field');
  this.clipboard.copy(pretty(content!.innerHTML));
}

I understand that I copy HTML code. So after copy(), I paste raw HTML. Is there any way to render this HTML code before copying it? Or can I use the rendered code directly?

What do I want to achieve?

The user should be able to copy everything to his/her email client. For example, an image with text should be displayed like in the browser. But my current solution displays the HTML (...).


问:
Canvas in ASP.NET Core MVC controller
How can I retrieve my image drawn in my canvas tag on my Index.cshtml page in my Home Controller?

I can currently get the  from them but not the value of  to insert it into a PDF later

My index.cshtml:

```<code><form asp-action="Index">
    <table>
        <tr>
            <th>Date</th>
            <th>Société</th>
            <th>Nom / Prénom</th>
            <th>Signature (matin)</th>
            <th>Signature (après-midi)</th>
        </tr>
        <tr>
            <td><input asp-for="dateFormation" type="date" /></td>
            <td><input asp-for="societeForme" type="text" /></td>
            <td><input asp-for="nomPrenomForme" type="text" /></td>
            <td><canvas id="signatureCanvas" width="200" height="100"></canvas></td>
            <td><canvas id="signatureCanvas2" width="200" height="100"></canvas></td>
        </tr>
    </table>

    @*BOUTON ENVOYER*@
    <br />
    <div class="myforma">
        <button type="submit">Envoyer formulaire</button>
    </div>
    <br />
</form>
</code>```

My HomeController.cs:

public async Task<IActionResult> Index([Bind("dateFormation, societeForme, nomPrenomForme")] FormulaireModel formulaireModel)
{
    var renderer = new HtmlToPdf();
    var pdfCreate = renderer.RenderHtmlAsPdf(formulaireModel.typeFormation + " " + formulaireModel.dureeFormation + " " + formulaireModel.animateurFormation + " " + formulaireModel.dateFormation.ToShortDateString() + " " + formulaireModel.societeForme + " " + formulaireModel.nomPrenomForme);

    pdfCreate.SaveAs("liste-presence.pdf");

    return View();
}
```

Title: Canvas in ASP.NET Core MVC controller

Body:
How can I retrieve my image drawn in my canvas tag on my Index.cshtml page in my Home Controller?

I can currently get the  from them but not the value of  to insert it into a PDF later

My index.cshtml:

<form asp-action="Index">

            Date
            Société
            Nom / Prénom
            Signature (matin)
            Signature (après-midi)

            <input asp-for="dateFormation" type="date" />
            <input asp-for="societeForme" type="text" />
            <input asp-for="nomPrenomForme" type="text" />
            <canvas id="signatureCanvas" width="200" height="100"></canvas>
            <canvas id="signatureCanvas2" width="200" height="100"></canvas>

    @*BOUTON ENVOYER*@

        <button type="submit">Envoyer formulaire</button>

</form>

My HomeController.cs:

public async Task<IActionResult> Index([Bind("dateFormation, societeForme, nomPrenomForme")] FormulaireModel formulaireModel)
{
    var renderer = new HtmlToPdf();
    var pdfCreate = renderer.RenderHtmlAsPdf(formulaireModel.typeFormation + " " + formulaireModel.dureeFormation + " " + formulaireModel.animateurFormation + " " + formulaireModel.dateFormation.ToShortDateString() + " " + formulaireModel.societeForme + " " + formulaireModel.nomPrenomForme);

    pdfCreate.SaveAs("liste-presence.pdf");

    return View();
}


问:
Setting permissions by group in Django
I am working with a Django project that requires user, group, and permission management to be done only through the admin panel.

So I used Django's user system and created a login with this view.py

```<code># Django
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render, redirect

from django.contrib import messages

def LoginView(request):
    """
    Login
    Se utiliza el modulo de usuarios de Django
    """
    template_name = "login.html"
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request, user)
            if request.user.groups.filter(name="administradores").exists():
                return redirect('inicio')
            else:
                return redirect('listarS')
        else:
            messages.error(request, 'Error en el ingreso')
    else:
        messages.error(request, 'Error en CUIT o contraseña')

    context = {}
    return render(request, 'login.html', context)

def LogoutView(request):
    """
    Logout de Django
    """
    template_name = "login.html"
    context = {}
    logout(request)
    return redirect(request, 'login.html', context)
</code>```

Groups are administradores and operadores.  Users from operadores group only have permissions on specific model

group permissions

But when I add a user to this group:

user group

When logging in, this user can do anything (add, modify, delete or list) in any model of the application.

How should I do so that the users of the operadores group only have the permissions of that group?

Django version: 4.1.3

Title: Setting permissions by group in Django

Body:
I am working with a Django project that requires user, group, and permission management to be done only through the admin panel.

So I used Django's user system and created a login with this view.py

# Django
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render, redirect

from django.contrib import messages

def LoginView(request):
    """
    Login
    Se utiliza el modulo de usuarios de Django
    """
    template_name = "login.html"
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request, user)
            if request.user.groups.filter(name="administradores").exists():
                return redirect('inicio')
            else:
                return redirect('listarS')
        else:
            messages.error(request, 'Error en el ingreso')
    else:
        messages.error(request, 'Error en CUIT o contraseña')

    context = {}
    return render(request, 'login.html', context)

def LogoutView(request):
    """
    Logout de Django
    """
    template_name = "login.html"
    context = {}
    logout(request)
    return redirect(request, 'login.html', context)

Groups are administradores and operadores.  Users from operadores group only have permissions on specific model

group permissions

But when I add a user to this group:

user group

When logging in, this user can do anything (add, modify, delete or list) in any model of the application.

How should I do so that the users of the operadores group only have the permissions of that group?

Django version: 4.1.3


问:
HTML "hidden" attribute is making page load forever when using with React
I am trying to create a tab component with simple react state. But when using the
hidden
attribute the page start loading forever. Even if I restart the project the problem appears again.

```<code>import React, { useState } from "react";

const InventoryMain = () => {
  const [tabIndex, setTabIndex] = useState(0);
  return (
    <div>
      <div className="tabs">
        <span onClick={()=> setTabIndex(0)} className="tab tab-lifted" >Tab 1</span>
        <span onClick={()=> setTabIndex(1)} className="tab tab-lifted tab-active">Tab 2</span>
      </div>
      <div className="tab-contents">
        <div className="tab-1" hidden={tabIndex !== 0}>Tab1 </div>
        <div className="tab-2" hidden={tabIndex !== 1}>Tab2</div>
      </div>
    </div>
  );
};

export default InventoryMain;

</code>```

I was expecting a simple tab and was watching this video.
Simple React Tab video

Body:
I am trying to create a tab component with simple react state. But when using the
hidden
attribute the page start loading forever. Even if I restart the project the problem appears again.

import React, { useState } from "react";

const InventoryMain = () => {
  const [tabIndex, setTabIndex] = useState(0);
  return (

         setTabIndex(0)} className="tab tab-lifted" >Tab 1
         setTabIndex(1)} className="tab tab-lifted tab-active">Tab 2

Tab1

Tab2

  );
};

export default InventoryMain;

I was expecting a simple tab and was watching this video.
Simple React Tab video


问:
Save file from post response on button click in wordpress
A task:
The user, by clicking on the button, should be able to download and save the file.
The file is creating on another service. It can be obtained by post-request with body and headers.

I am using wordpress and my plugin. I can call a php function using form or jquery.

```<code>//Accept: application/pdf
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
$res = curl_exec($ch);
</code>```

This returns the headers and response body as a string.
(My asp .Net 6 external service returns FileStreamResult from method)

I don't know how to implement saving a file on the user's PC.
As far as I understand, I have two ways:

Download the file using curl on the server side. Then somehow transfer the ready file to the user for saving.
But then there will be an extra load on the backend.

I can create request body and headers on backend. Then execute this post request on the client side.

I am weak in web development...
I think the right way is to make a function on the backend that will return a json with the request body and headers.

I can create a separate php page (I think it's redundant) that will call this function. Or I can call this function from javascript or jquery, but I don't know how to initialize post request to save the file.

Maybe someone has already implemented this behavior and can tell me?
Thanks.

upd. #1

I found this solution:

```<code>var request = new XMLHttpRequest();
request.responseType = "blob";
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/json");
request.onload = function() {
    var url = window.URL.createObjectURL(this.response);
    var a = document.createElement("a");
    document.body.appendChild(a);
    a.href = url;
    a.download = this.response.name || "filename"
    a.click();
}
request.send(json);
</code>```

But it looks like a dirty hack.
And it does not work as it should (the file is first downloaded before saving).

upd. #2

I'm willing to change the method from POST to GET, but I still need to pass the ApiKey in the header.
I think my issue is discussed here: https://github.com/whatwg/html/issues/7810

So far, I have not found a way that implements both points:

Adding custom headers to the request.

Showing the file save dialog before it is downloaded.

Body:
A task:
The user, by clicking on the button, should be able to download and save the file.
The file is creating on another service. It can be obtained by post-request with body and headers.

I am using wordpress and my plugin. I can call a php function using form or jquery.

//Accept: application/pdf
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
$res = curl_exec($ch);

This returns the headers and response body as a string.
(My asp .Net 6 external service returns FileStreamResult from method)

I don't know how to implement saving a file on the user's PC.
As far as I understand, I have two ways:

Download the file using curl on the server side. Then somehow transfer the ready file to the user for saving.
But then there will be an extra load on the backend.

I can create request body and headers on backend. Then execute this post request on the client side.

I am weak in web development...
I think the right way is to make a function on the backend that will return a json with the request body and headers.

I can create a separate php page (I think it's redundant) that will call this function. Or I can call this function from javascript or jquery, but I don't know how to initialize post request to save the file.

Maybe someone has already implemented this behavior and can tell me?
Thanks.

upd. #1

I found this solution:

var request = new XMLHttpRequest();
request.responseType = "blob";
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/json");
request.onload = function() {
    var url = window.URL.createObjectURL(this.response);
    var a = document.createElement("a");
    document.body.appendChild(a);
    a.href = url;
    a.download = this.response.name || "filename"
    a.click();
}
request.send(json);

But it looks like a dirty hack.
And it does not work as it should (the file is first downloaded before saving).

upd. #2

I'm willing to change the method from POST to GET, but I still need to pass the ApiKey in the header.
I think my issue is discussed here: https://github.com/whatwg/html/issues/7810

So far, I have not found a way that implements both points:

Adding custom headers to the request.

Showing the file save dialog before it is downloaded.


问:
How to restore global environment in RStudio
I am new to R and had a lot of data in global environment that I unfortunately did not save. Now that I am re-opening R, it is opening in safe mode and not re-loading my global environment. Is there a way to recover everything in my prior global environment?</p>


问:
Java,Add user into Active Directory (samba-ad)
I try to add users in my active directory (samba-ad). The addition goes well except that the name of the user appears in a character string for example yanick gives $BE23343... in the active directory

indeed I retrieve the information that the user would have typed through the graphical interface and I add in the context

here is what i tried

```<code>import javax.naming.*;
import javax.naming.directory.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Hashtable;

public class ADManagerUI extends JFrame {

  private static final long serialVersionUID = 1L;
private JTextField cnField;
  private JTextField snField;
  private JTextField uidField;
  private JTextField passwordField;
  private JTextField mailField;
  private JTextField displayNameField;
  private JTextField descriptionField;
  private JButton addButton;
  private JButton deleteButton;
  private JButton modifyButton;

  public ADManagerUI() {
    // Initialisation de la fenêtre
    setTitle("Gestionnaire d'utilisateurs AD");
    setSize(600, 400);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    // Création des champs de texte et des labels
    JLabel cnLabel = new JLabel("Nom complet :");
    cnField = new JTextField(20);
    JLabel snLabel = new JLabel("Nom de famille :");
    snField = new JTextField(20);
    JLabel uidLabel = new JLabel("Nom d'utilisateur :");
    uidField = new JTextField(20);
    JLabel passwordLabel = new JLabel("Mot de passe :");
    passwordField = new JTextField(20);
    JLabel mailLabel = new JLabel("Adresse e-mail :");
    mailField = new JTextField(20);
    JLabel displayNameLabel = new JLabel("Nom affiché :");
    displayNameField = new JTextField(20);
    JLabel descriptionLabel = new JLabel("Description :");
    descriptionField = new JTextField(20);

    // Création des boutons
    addButton = new JButton("Ajouter un utilisateur");
    deleteButton = new JButton("Supprimer un utilisateur");
    modifyButton = new JButton("Modifier un utilisateur");

    // Ajout des champs de texte et des labels à la fenêtre
    setLayout(new GridBagLayout());
    GridBagConstraints constraints = new GridBagConstraints();
    constraints.anchor = GridBagConstraints.WEST;
    constraints.insets = new Insets(5, 5, 5, 5);
    constraints.gridx = 0;
    constraints.gridy = 0;
    add(cnLabel, constraints);
    constraints.gridx = 1;
    add(cnField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 1;
    add(snLabel, constraints);
    constraints.gridx = 1;
    add(snField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 2;
    add(uidLabel, constraints);
    constraints.gridx = 1;
    add(uidField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 3;
    add(passwordLabel, constraints);
    constraints.gridx = 1;
    add(passwordField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 4;
    add(mailLabel, constraints);
    constraints.gridx = 1;
    add( mailField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 5;
    add(displayNameLabel, constraints);
    constraints.gridx = 1;
    add(displayNameField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 6;
    add(descriptionLabel , constraints);
    constraints.gridx = 1;
    add(descriptionField, constraints);
    // Ajout des boutons à la fenêtre
    constraints.gridx = 0;
    constraints.gridy = 8;
    add(addButton, constraints);
    constraints.gridx = 1;
    add(deleteButton, constraints);
    constraints.gridx = 2;
    add(modifyButton, constraints);
    // Ajout des listeners aux boutons
    addButton.addActionListener(new AddButtonListener());
    deleteButton.addActionListener(new DeleteButtonListener());
    modifyButton.addActionListener(new ModifyButtonListener());
}

// Classe interne pour gérer le clic sur le bouton "Ajouter"
class AddButtonListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    // Les informations de connexion au serveur LDAP
    String ldapAdServer = "ldap://serveur.domaine.com";
    String ldapUsername = "cn=admin,dc=domaine,dc=com";
    String ldapPassword = "mot_de_passe";

    // Les informations du nouvel utilisateur
    String cn = cnField.getText();
    String sn = snField.getText();
    String uid = uidField.getText();
    String password = passwordField.getText();
    String mail = mailField.getText();
    String displayName = displayNameField.getText();
    String description = descriptionField.getText();

    // Connexion au serveur LDAP
    Hashtable<String, Object> env = new Hashtable<String, Object>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapAdServer);
    env.put(Context.SECURITY_PRINCIPAL, ldapUsername);
    env.put(Context.SECURITY_CREDENTIALS, ldapPassword);

    try {
      // Création du contexte LDAP
      DirContext ctx = new InitialDirContext(env);

      // Création de l'entrée pour le nouvel utilisateur
      Attributes attrs = new BasicAttributes();
      Attribute objClasses = new BasicAttribute("objectClass");
      objClasses.add("top");
      objClasses.add("person");
      objClasses.add("organizationalPerson");
      objClasses.add("user");
      attrs.put(objClasses);
      attrs.put(new BasicAttribute("cn", cn));
      attrs.put(new BasicAttribute("sn", sn));
      attrs.put(new BasicAttribute("uid", uid));
      attrs.put(new BasicAttribute("userPassword", password));
      attrs.put(new BasicAttribute("mail", mail));
      attrs.put(new BasicAttribute("displayName", displayName));
      attrs.put(new BasicAttribute("description", description));

      String dn = "cn=" + cn + ",ou=utilisateurs,dc=domaine,dc=com";
      ctx.createSubcontext(dn, attrs);
      ctx.close();

      JOptionPane.showMessageDialog(null, "Utilisateur ajouté avec succès !");
    } catch (NamingException ex) {
      ex.printStackTrace();
      JOptionPane.showMessageDialog(null, "Erreur lors de l'ajout de l'utilisateur !");
    }
  }
}

}

public static void main(String[] args) {
  ADManagerUI adUI = new ADManagerUI();
  adUI.setVisible(true);
}
}
</code>```

Body:
I try to add users in my active directory (samba-ad). The addition goes well except that the name of the user appears in a character string for example yanick gives $BE23343... in the active directory

indeed I retrieve the information that the user would have typed through the graphical interface and I add in the context

here is what i tried

import javax.naming.*;
import javax.naming.directory.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Hashtable;

public class ADManagerUI extends JFrame {

  private static final long serialVersionUID = 1L;
private JTextField cnField;
  private JTextField snField;
  private JTextField uidField;
  private JTextField passwordField;
  private JTextField mailField;
  private JTextField displayNameField;
  private JTextField descriptionField;
  private JButton addButton;
  private JButton deleteButton;
  private JButton modifyButton;

  public ADManagerUI() {
    // Initialisation de la fenêtre
    setTitle("Gestionnaire d'utilisateurs AD");
    setSize(600, 400);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    // Création des champs de texte et des labels
    JLabel cnLabel = new JLabel("Nom complet :");
    cnField = new JTextField(20);
    JLabel snLabel = new JLabel("Nom de famille :");
    snField = new JTextField(20);
    JLabel uidLabel = new JLabel("Nom d'utilisateur :");
    uidField = new JTextField(20);
    JLabel passwordLabel = new JLabel("Mot de passe :");
    passwordField = new JTextField(20);
    JLabel mailLabel = new JLabel("Adresse e-mail :");
    mailField = new JTextField(20);
    JLabel displayNameLabel = new JLabel("Nom affiché :");
    displayNameField = new JTextField(20);
    JLabel descriptionLabel = new JLabel("Description :");
    descriptionField = new JTextField(20);

    // Création des boutons
    addButton = new JButton("Ajouter un utilisateur");
    deleteButton = new JButton("Supprimer un utilisateur");
    modifyButton = new JButton("Modifier un utilisateur");

    // Ajout des champs de texte et des labels à la fenêtre
    setLayout(new GridBagLayout());
    GridBagConstraints constraints = new GridBagConstraints();
    constraints.anchor = GridBagConstraints.WEST;
    constraints.insets = new Insets(5, 5, 5, 5);
    constraints.gridx = 0;
    constraints.gridy = 0;
    add(cnLabel, constraints);
    constraints.gridx = 1;
    add(cnField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 1;
    add(snLabel, constraints);
    constraints.gridx = 1;
    add(snField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 2;
    add(uidLabel, constraints);
    constraints.gridx = 1;
    add(uidField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 3;
    add(passwordLabel, constraints);
    constraints.gridx = 1;
    add(passwordField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 4;
    add(mailLabel, constraints);
    constraints.gridx = 1;
    add( mailField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 5;
    add(displayNameLabel, constraints);
    constraints.gridx = 1;
    add(displayNameField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 6;
    add(descriptionLabel , constraints);
    constraints.gridx = 1;
    add(descriptionField, constraints);
    // Ajout des boutons à la fenêtre
    constraints.gridx = 0;
    constraints.gridy = 8;
    add(addButton, constraints);
    constraints.gridx = 1;
    add(deleteButton, constraints);
    constraints.gridx = 2;
    add(modifyButton, constraints);
    // Ajout des listeners aux boutons
    addButton.addActionListener(new AddButtonListener());
    deleteButton.addActionListener(new DeleteButtonListener());
    modifyButton.addActionListener(new ModifyButtonListener());
}

// Classe interne pour gérer le clic sur le bouton "Ajouter"
class AddButtonListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    // Les informations de connexion au serveur LDAP
    String ldapAdServer = "ldap://serveur.domaine.com";
    String ldapUsername = "cn=admin,dc=domaine,dc=com";
    String ldapPassword = "mot_de_passe";

    // Les informations du nouvel utilisateur
    String cn = cnField.getText();
    String sn = snField.getText();
    String uid = uidField.getText();
    String password = passwordField.getText();
    String mail = mailField.getText();
    String displayName = displayNameField.getText();
    String description = descriptionField.getText();

    // Connexion au serveur LDAP
    Hashtable<String, Object> env = new Hashtable<String, Object>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapAdServer);
    env.put(Context.SECURITY_PRINCIPAL, ldapUsername);
    env.put(Context.SECURITY_CREDENTIALS, ldapPassword);

    try {
      // Création du contexte LDAP
      DirContext ctx = new InitialDirContext(env);

      // Création de l'entrée pour le nouvel utilisateur
      Attributes attrs = new BasicAttributes();
      Attribute objClasses = new BasicAttribute("objectClass");
      objClasses.add("top");
      objClasses.add("person");
      objClasses.add("organizationalPerson");
      objClasses.add("user");
      attrs.put(objClasses);
      attrs.put(new BasicAttribute("cn", cn));
      attrs.put(new BasicAttribute("sn", sn));
      attrs.put(new BasicAttribute("uid", uid));
      attrs.put(new BasicAttribute("userPassword", password));
      attrs.put(new BasicAttribute("mail", mail));
      attrs.put(new BasicAttribute("displayName", displayName));
      attrs.put(new BasicAttribute("description", description));

      String dn = "cn=" + cn + ",ou=utilisateurs,dc=domaine,dc=com";
      ctx.createSubcontext(dn, attrs);
      ctx.close();

      JOptionPane.showMessageDialog(null, "Utilisateur ajouté avec succès !");
    } catch (NamingException ex) {
      ex.printStackTrace();
      JOptionPane.showMessageDialog(null, "Erreur lors de l'ajout de l'utilisateur !");
    }
  }
}

}

public static void main(String[] args) {
  ADManagerUI adUI = new ADManagerUI();
  adUI.setVisible(true);
}
}


问:
Laravel Nova Value Metric - How to make the decrease a good thing
I'd like to add a Metric to a Nova dashboard where an increase in the value is a bad thing.  Meaning, in the picture like below, the arrow would be red instead of green.

Is this possible to accomplish with a Metric Value?  I thought I had read somewhere had to do this but can't seem to find it now, including in the Metric docs.


问:
SSRS: Can a calculated field results populated into a parameter?
I'm pretty new to SSRS and wanted to know if I can get values from a calculated field in my query into a parameter. The field is calculating the difference between two date columns. For example...

DATEDIFF(day, Order_Date, COALESCE(Shipped_Date, GETDATE())) AS Days

Trying to get the results of 'Days' into a parameter which will give the end user ability to filter on selected 'Days'.


问:
How to share a service class across components in next-js
I'm trying to implement [https://auth0.com/docs/libraries/auth0js][auth0-js] in React using next-js.

The reason why I am NOT using auth0-react is because it does not support embedded login.

I'm assuming since auth0-js is pure JS, I would need to create some form of service in order to support it that could then be injected into components. I came across the following example (the only exception is it's using Gatsby instead of next-js.

https://github.com/epilande/gatsby-theme-auth0/tree/master/gatsby-theme-auth0/src

I've copied over the service and updated it to match my credentials, but calling AuthService.login() doesn't work.

```<code>export const TestLogin = () => {
  return (
    <button
      onClick={() => {
        AuthService.login();
      }}
    />
  );
};
</code>```

This makes sense because auth0 hasn't be instantiated yet, but I am unsure how to do that and then share them across all components in a way that makes sense. I can't see where it is being done in the sample repo I provided....I'm assuming gatsby-config is somehow doing it, but don't know how that translates to next-js.

Would this be done in some form of provider/injection?

Body:
I'm trying to implement [https://auth0.com/docs/libraries/auth0js][auth0-js] in React using next-js.

The reason why I am NOT using auth0-react is because it does not support embedded login.

I'm assuming since auth0-js is pure JS, I would need to create some form of service in order to support it that could then be injected into components. I came across the following example (the only exception is it's using Gatsby instead of next-js.

https://github.com/epilande/gatsby-theme-auth0/tree/master/gatsby-theme-auth0/src

I've copied over the service and updated it to match my credentials, but calling AuthService.login() doesn't work.

export const TestLogin = () => {
  return (
    <button
      onClick={() => {
        AuthService.login();
      }}
    />
  );
};

This makes sense because auth0 hasn't be instantiated yet, but I am unsure how to do that and then share them across all components in a way that makes sense. I can't see where it is being done in the sample repo I provided....I'm assuming gatsby-config is somehow doing it, but don't know how that translates to next-js.

Would this be done in some form of provider/injection?


问:
Load external JSON data via API into PDF file form field
I have a button inside a PDF file which when clicked should call an API and write the data into a form field. Inside the Acrobat Reader Debugger I get the 'undefined' error. What am I missing?

FYI I have changed the API key...

var API = "https://api.openweathermap.org/data/2.5/weather?q=Berlin&units=metric&lang=de&appid=860b8e982b1aecb176f5aee385c73be0"

var getData = app.trustedFunction(function (cURL) {

```<code>app.beginPriv();

var params = {

   cVerb: "GET",
   cURL: cURL,
   oHandler: {

        response: function (msg, uri, e) {

            var stream = msg;
            var string = "";
            string = SOAP.stringFromStream(stream);

          var data = eval("(" + string + ")");

        }
    }
};

Net.HTTP.request(params);

app.endPriv();
</code>```

});

getData(API);
getField('1').value = data.main.temp;

Body:
I have a button inside a PDF file which when clicked should call an API and write the data into a form field. Inside the Acrobat Reader Debugger I get the 'undefined' error. What am I missing?

FYI I have changed the API key...

var API = "https://api.openweathermap.org/data/2.5/weather?q=Berlin&units=metric&lang=de&appid=860b8e982b1aecb176f5aee385c73be0"

var getData = app.trustedFunction(function (cURL) {

app.beginPriv();

var params = {

   cVerb: "GET",
   cURL: cURL,
   oHandler: {

        response: function (msg, uri, e) {

            var stream = msg;
            var string = "";
            string = SOAP.stringFromStream(stream);

          var data = eval("(" + string + ")");

        }
    }
};

Net.HTTP.request(params);

app.endPriv();

});

getData(API);
getField('1').value = data.main.temp;


问:
Rendering Array List in HTML Dropdown from Google spreadsheet
I am trying to get a list from my spreadsheet into the html select drop-down in the web application. I was able to pass a reference number into the html, but not the list from spreadsheet. I have gone through the code multiple time but can't seem to find what i am doing wrong. I hope someone is able to put me through on this

HTML

```<code><!--language: lang-html -->

<head>
    <base target="_top">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
        integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>

<body>
    <div class="container">
        <form id="paymentForm" onsubmit="handleFormSubmit(this)">
            <p class="h4 mb-4 text-center">LADIES LUXURY 1</p>

            <div class="form-group col-sm-2"> <!-- STRAP/BAND -->
              <label for="strapband" class="form-label">STRAP/BAND</label>
              <select class="form-control" id="strapband" name="strapband" required>
              <option selected disabled value="">Choose..</option>
              <?= list; ?>
        <button type="submit" class="btn btn-danger btn-lg btn-block">BUY NOW</button>
        </form>
        <div id="output"></div>
    </div>

  <?!= include('Updates'); ?>
    <?!= include('JavaScript'); ?>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  <script src="https://js.paystack.co/v1/inline.js"></script>
</body>
</code>```

DOGET & LOAD FUNCTION

```<code>const APP_NAME = "CATEGORY SALES"
const LAD_NAME = "LADIES CATEGORY SALES"
const MEN_NAME = "MEN CATEGORY SALES"
const COU_NAME = "COUPLE CATEGORY SALES"
const REP_NAME = "WATCH REPAIR"
const GIF_NAME = "GIFTING SERVICE"
var url="https://docs.google.com/spreadsheets/d/1CK1bAcrTAOabkzK0YxliVFFh8VFPYIYXDy6ocvnGuGY/edit#gid=1312844985";
const uuid = Utilities.getUuid()
var Route = {};
Route.path = function(route,callback){
  Route[route] = callback;
}

function doGet(e) {

  Route.path("ll1",loadSalesFormLL1);
  Route.path("ll2",loadSalesFormLL2);
  Route.path("ll3",loadSalesFormLL3);

  if (Route[e.parameters.v]) {
    return Route[e.parameters.v]();
  }else {
    return render ("404");
  }
}

function loadSalesFormLL1() {
var referenceNumber = uuid;
var ss= SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("DROPDOWNS");
var list = ws.getRange(2,1,ws.getRange("A1").getDataRegion().getLastRow(),1).getValues();   //Logger.log(list);
var htmlListArray = list.map(function(r){ return '<options>' + r[0] + '</options>' ; }).join('');   Logger.log(htmlListArray);
return render("LL1",{list: htmlListArray, referenceNumber}).setTitle(LAD_NAME).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); }
</code>```

RENDER FUNCTION

```<code>function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .getContent();
}

function render (file,argsObject){

var tmp = HtmlService.createTemplateFromFile(file);
if(argsObject){
var keys = Object.keys(argsObject);

keys.forEach(function(key){
tmp\[key\] = argsObject\[key\];
});
}//END IF
return tmp.evaluate();
}
</code>```

Body:
I am trying to get a list from my spreadsheet into the html select drop-down in the web application. I was able to pass a reference number into the html, but not the list from spreadsheet. I have gone through the code multiple time but can't seem to find what i am doing wrong. I hope someone is able to put me through on this

HTML

    <base target="_top">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
        integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

        <form id="paymentForm" onsubmit="handleFormSubmit(this)">

LADIES LUXURY 1

              STRAP/BAND
              <select class="form-control" id="strapband" name="strapband" required>
              <option selected disabled value="">Choose..</option>
              <?= list; ?>
        <button type="submit" class="btn btn-danger btn-lg btn-block">BUY NOW</button>
        </form>

  <?!= include('Updates'); ?>
    <?!= include('JavaScript'); ?>

DOGET & LOAD FUNCTION

const APP_NAME = "CATEGORY SALES"
const LAD_NAME = "LADIES CATEGORY SALES"
const MEN_NAME = "MEN CATEGORY SALES"
const COU_NAME = "COUPLE CATEGORY SALES"
const REP_NAME = "WATCH REPAIR"
const GIF_NAME = "GIFTING SERVICE"
var url="https://docs.google.com/spreadsheets/d/1CK1bAcrTAOabkzK0YxliVFFh8VFPYIYXDy6ocvnGuGY/edit#gid=1312844985";
const uuid = Utilities.getUuid()
var Route = {};
Route.path = function(route,callback){
  Route[route] = callback;
}

function doGet(e) {

  Route.path("ll1",loadSalesFormLL1);
  Route.path("ll2",loadSalesFormLL2);
  Route.path("ll3",loadSalesFormLL3);

  if (Route[e.parameters.v]) {
    return Route[e.parameters.v]();
  }else {
    return render ("404");
  }
}

function loadSalesFormLL1() {
var referenceNumber = uuid;
var ss= SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("DROPDOWNS");
var list = ws.getRange(2,1,ws.getRange("A1").getDataRegion().getLastRow(),1).getValues();   //Logger.log(list);
var htmlListArray = list.map(function(r){ return '<options>' + r[0] + '</options>' ; }).join('');   Logger.log(htmlListArray);
return render("LL1",{list: htmlListArray, referenceNumber}).setTitle(LAD_NAME).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); }

RENDER FUNCTION

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .getContent();
}

function render (file,argsObject){

var tmp = HtmlService.createTemplateFromFile(file);
if(argsObject){
var keys = Object.keys(argsObject);

keys.forEach(function(key){
tmp\[key\] = argsObject\[key\];
});
}//END IF
return tmp.evaluate();
}


问:
pandas `MiltiIndex` - `where` is not supported for MultiIndex
Hi I want to replace index values by some other values if the condition is satisfied (keeping index.names unctouched). The following works for Index:

```<code>df.index = df.index.where(~df.index.isin(indicesToReplace), newIndices)

</code>```

However for MultiIndex I got where is not supported for MultiIndex operations. What other function can I use?

Body:
Hi I want to replace index values by some other values if the condition is satisfied (keeping index.names unctouched). The following works for Index:

df.index = df.index.where(~df.index.isin(indicesToReplace), newIndices)

However for MultiIndex I got where is not supported for MultiIndex operations. What other function can I use?


问:
Update each wind rose's properties in a python plotly subplot
I am trying to plot multiple wind roses in a subplot using Barplot function of the plotly.graph_objects library. I have succeded to render the wind roses.

After that, I tried to customize the properties of the wind roses using fig.update_layout, but only one of them was updated properly (see figure).
'''

```<code>fig.update_layout(
    title=title,
    title_font_size=26,
    title_x = 0.463,
    legend_font_size=18,
    polar_radialaxis_ticksuffix='%',
    polar_angularaxis_rotation=90,
    polar_angularaxis_direction='clockwise',
    polar_angularaxis_tickmode = 'array',
    polar_angularaxis_tickvals=[0, 45, 90, 135, 180, 225, 270, 315],
    polar_angularaxis_ticktext=['<b>N</b>','NE', '<b>E</b>', 'SE', '<b>S</b>', 'SW', '<b>W</b>', 'NW'],
    polar_angularaxis_tickfont_size = 22,
    polar_radialaxis_tickmode = 'linear',
    polar_radialaxis_angle = 45,
    polar_radialaxis_tick0 = 5,
    polar_radialaxis_dtick = 5,
    polar_radialaxis_tickangle = 100,
    polar_radialaxis_tickfont_size = 14)
</code>```

'''

Can anyone please suggest some way to achieve this ? the main properties I want to modify (polar_angularaxis_rotation polar_angularaxis_direction , polar_angularaxis_tickvals , polar_angularaxis_ticktext … )

Body:
I am trying to plot multiple wind roses in a subplot using Barplot function of the plotly.graph_objects library. I have succeded to render the wind roses.

After that, I tried to customize the properties of the wind roses using fig.update_layout, but only one of them was updated properly (see figure).
'''

fig.update_layout(
    title=title,
    title_font_size=26,
    title_x = 0.463,
    legend_font_size=18,
    polar_radialaxis_ticksuffix='%',
    polar_angularaxis_rotation=90,
    polar_angularaxis_direction='clockwise',
    polar_angularaxis_tickmode = 'array',
    polar_angularaxis_tickvals=[0, 45, 90, 135, 180, 225, 270, 315],
    polar_angularaxis_ticktext=['N','NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'],
    polar_angularaxis_tickfont_size = 22,
    polar_radialaxis_tickmode = 'linear',
    polar_radialaxis_angle = 45,
    polar_radialaxis_tick0 = 5,
    polar_radialaxis_dtick = 5,
    polar_radialaxis_tickangle = 100,
    polar_radialaxis_tickfont_size = 14)

'''

Can anyone please suggest some way to achieve this ? the main properties I want to modify (polar_angularaxis_rotation polar_angularaxis_direction , polar_angularaxis_tickvals , polar_angularaxis_ticktext … )


问:
Maven Release Rollback filed
Can some one please help me with

run: ./mvnw -f  ${{ inputs.pom-path }} -B clean release:prepare release:perform release:rollback

When I am trying to add release:rollback in my github actions file I am getting below issue

Error:  Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.0-M6:rollback (default-cli) on project

Please let me know how to resolve it?

Title: Maven Release Rollback filed


问:
Best way to skip the first loop of a python for loop?
I'm currently using this code to skip the first loop of the for, is there a better way to do so ? (ui_queue[guild_id] is a dict)</p>
```<code>remove_zero = 0
for x in ui_queue[guild_id]
    if remove_zero != 1:
        remove_zero = 1
        continue

    # stuff happening here
</code>```

Body:
I'm currently using this code to skip the first loop of the for, is there a better way to do so ? (ui_queue[guild_id] is a dict)

remove_zero = 0
for x in ui_queue[guild_id]
    if remove_zero != 1:
        remove_zero = 1
        continue

    # stuff happening here


问:
Android app problem: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 207: invalid start byte
So I have two ubuntu servers stage and dev, and one single API for android, IOS and web front on reactjs.

I get this error when I try to upload a photo to my server from ANDROID app, basically I can upload the same photo to DEV server from Postman and IOS, but I keep getting this error when I try uploading from android. But from the same android app I can upload this exact photo to stage server and prod server, so basically nothing wrong with android app, but something is wrong on the server, even tho it correctly works with IOS and postman and web app.

I believe that the code and settings are almost the same on both servers, so I have no idea where is the problem...

```<code>Traceback (most recent call last):
  File "/home/project/.local/share/virtualenvs/blabla_backend-B039YcMy/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/project/blabla_backend/dating/middleware.py", line 144, in call
    body_repl = str(request.body, 'utf-8').replace('\n', '') if request.body else 'null'
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 207: invalid start byte
</code>```

Uploading a photo from android just like from other apps, but it just dissapears and I get this error in django logs. But still same android app can somehow upload photos to other servers without this bug...

Body:
So I have two ubuntu servers stage and dev, and one single API for android, IOS and web front on reactjs.

I get this error when I try to upload a photo to my server from ANDROID app, basically I can upload the same photo to DEV server from Postman and IOS, but I keep getting this error when I try uploading from android. But from the same android app I can upload this exact photo to stage server and prod server, so basically nothing wrong with android app, but something is wrong on the server, even tho it correctly works with IOS and postman and web app.

I believe that the code and settings are almost the same on both servers, so I have no idea where is the problem...

Traceback (most recent call last):
  File "/home/project/.local/share/virtualenvs/blabla_backend-B039YcMy/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/project/blabla_backend/dating/middleware.py", line 144, in call
    body_repl = str(request.body, 'utf-8').replace('\n', '') if request.body else 'null'
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 207: invalid start byte

Uploading a photo from android just like from other apps, but it just dissapears and I get this error in django logs. But still same android app can somehow upload photos to other servers without this bug...