iOS:带有Spring Boot的插座流量失败



背景
我想使用Alamofire Lib将base64字符串从iOS应用发送到弹簧靴后端。

问题
由于此错误而失败:

2017-08-31 10:22:49.547259+0200 Epic[851:367066] [] 
nw_endpoint_flow_prepare_output_frames [6.1 46.30.215.94:80 ready 
socket-flow (satisfied)] Failed to use 1 frames, marking as failed
2017-08-31 10:22:49.549173+0200 Epic[851:367066] [] 
nw_endpoint_handler_add_write_request [6.1 46.30.215.94:80 failed 
socket-flow (satisfied)] cannot accept write requests
2017-08-31 10:22:49.552773+0200 Epic[851:367069] [] 
tcp_connection_write_eof_block_invoke Write close callback received 
error: [22] Invalid argument

当我将端点从本地开发环境更改为Heroko时,就会发生这个问题。(http://heroku.com)。

我可以在没有问题的情况下发送较小的图像(100x100),但不能(600x600)。

我尝试过:
- 添加HTTP标头"内容长度"和JSON主体的长度。
- 从发送JSON主体转换为URL参数。

有什么建议吗?我可以配置Heroku Spring引导以接受更大的HTTP数据请求,还是在应用程序中需要进行的设置?

我的代码:

func createImage(_ image: UIImage, success: @escaping (String)->(), failed: @escaping (Void)->(Void)){
    let base64 = image.getImageAsBase64()
    Alamofire.request(self.url, method: .put, parameters: ["image" : base64], headers: self.headers)
        .responseString(completionHandler: {response in
            switch(response.result) {
            case .success(let response):
                success(response)
                break;
            case .failure(let error):
                print(error)
                failed()
                break;
            }
        })
}

也有相同的问题。这是因为Alamofire的字符数量有限。您需要使用alamofire.upload进行图像或大数据。请参阅https://github.com/alamofire/alamofire#uploading-data-to-a-server。

最新更新