小编Rob*_*b13的帖子

如何在 Flutter 中解码 Gzip Http 响应?

我是 Flutter 的新手。我正在发出网络请求并且得到了正确的响应,但数据是 Gzip 压缩的。我已经在 Swift 中解压缩了相同的内容,但是使用 Flutter,我无法做到这一点。有人可以帮忙吗?

这是我尝试过的:

import 'dart:convert';
import 'package:http/http.dart';
import 'package:archive/archive.dart';
import 'package:flutter_app/Constants/constants.dart';

class ServiceHelper {

  static final sharedInstance = ServiceHelper();

  Future<Response> sendRequest({String path, Map<String,dynamic> params}) async {

    final String url = Constants.testURL+path;

    var body = jsonEncode(params);

    Response response = await post(url, body:body);

    final gZipped_data = GZipDecoder().decodeBytes(response.bodyBytes);

    print(gZipped_data); //flutter: [123, 34, 115, 116, 97, 116, 117, 115, 34, 58, 50, 48, 48, 44, 34, 109, 101, 115, 115, 97, 103, 101, 34, 58, 34, 83, 105, …
Run Code Online (Sandbox Code Playgroud)

json gzip decode utf-8 flutter

6
推荐指数
1
解决办法
2844
查看次数

如何在 Swift 4 中传递 Encodable 或 Decodable 作为参数?

我正在学习 JSONParsing。我遵循了教程,得到的是这样的:

    guard let url = URL(string: "http://localhost/test-api/public/api/register") else { return }

    var request  = URLRequest(url: url)

    request.httpMethod = "POST"

    let newUser = User.init(name: self.collectionTF[0].text, email: self.collectionTF[1].text, password: self.collectionTF[2].text)

    do {

        let jsonBody = try JSONEncoder().encode(newUser)

        request.httpBody = jsonBody

    } catch { }

    URLSession.shared.dataTask(with: request) { (data, response, error) in

        guard let data = data else { return }

        do {

            let json = try JSONSerialization.jsonObject(with: data) as? [String:Any]

            print(json!)

            DispatchQueue.main.async {

            if json!["status"] as! Int == 200
            {
                GeneralHelper.shared.keepLoggedIn() …
Run Code Online (Sandbox Code Playgroud)

api xcode json ios swift

5
推荐指数
1
解决办法
8805
查看次数

如何在 Swift 4 中测试 API?

我是单元测试的新手。我已经测试了很多功能并且理解了这个概念,现在我想检查 API。是否可以?大概吧。这是 API:

func sendRequest(path: String, params: Dictionary<String, Any>, showSpinner: Bool, completionHandler: @escaping (JSON, Error?) -> Void) {
    if Constants.IS_SIMULATOR {
        print("Path: \(path)")
        print("Params: \(params)")
    }

    if Constants.APP_DEL.reachability?.connection == .none {
        completionHandler(JSON.null, NSError(domain: "No internet", code: 4, userInfo: nil))
        return
    }

    UIApplication.shared.isNetworkActivityIndicatorVisible = true

    if showSpinner {
        HUD.show(.labeledProgress(title: "Loading...", subtitle: "Please wait"))
    }

    if let jsonData = try? JSONSerialization.data(withJSONObject: params, options: .prettyPrinted) {

        let url = NSURL(string: String(format: "%@%@", Constants.TEST_URL, path))!
        let request = NSMutableURLRequest(url: url as URL)
        request.httpMethod = …
Run Code Online (Sandbox Code Playgroud)

xcode unit-testing ios swift

5
推荐指数
1
解决办法
9960
查看次数

如何在 Swift 中向 UIImageView 添加自定义形状?

我正在尝试将自定义形状添加到imageView. 请检查以下图片。

这是必需的:

所需的图像形状

这是我到目前为止所做的:

当前图像形状

我是新手,Core Graphics到目前为止我已经做到了:

    private func customImageClipper(imageV: UIImageView){

    let path = UIBezierPath()

    let size = imageV.frame.size

    print(size)

    path.move(to: CGPoint(x: 0.0, y: size.height))

    path.addLine(to: CGPoint(x: 0.8, y: size.height/2))

    path.close()

    let shape = CAShapeLayer()

    shape.path = path.cgPath

    imageV.layer.sublayers = [shape]

}
Run Code Online (Sandbox Code Playgroud)

我正在创建一个函数来实现这样的形状,但是每当我将 传递给imageView这个函数时,我根本看不到任何变化。我知道我必须从一个点移动到另一个点才能达到这个形状,但我从来没有这样做过。任何帮助,将不胜感激。这就是我调用这个函数的方式:

imageV.layoutIfNeeded()

customImageClipper(imageV: imageV)
Run Code Online (Sandbox Code Playgroud)

PS:我没有使用Storyboard,我以编程方式创建了这个。

core-graphics cashapelayer ios uibezierpath swift

5
推荐指数
1
解决办法
1140
查看次数

如何比较两个字符串以检查它们是否具有相同的字符Swift 4?

我在HackerEarth上玩,我遇到了这个问题.

我尝试做的是比较字符串并检查它们是否具有相同的字符.

var string = ""

while let thing = readLine() 
{ 
string += thing + " "
}

var arrayStr = string.split(separator: " ").map{String(($0))}

var firstString = [String]()

var secondString = [String]()

var cas = arrayStr[0]

for i in 1..<arrayStr.count
{
if i % 2 != 0 
{
    firstString.append(String(arrayStr[i]))
}
else
{
    secondString.append(String(arrayStr[i]))
}
}
print(firstString) //["sumit", "ambuj", "abhi"]


print(secondString) //["mitsu", "jumba", "hibb"]
Run Code Online (Sandbox Code Playgroud)

所以,现在你可以看到第一个索引firstStringsecondString包含相同的字符,第二个索引相同,但不是最后一个索引.

那么,我该如何比较呢?我尝试过NSCharacter,但是HackerEarth没有尝试过.有任何想法吗?

logic swift swift4

3
推荐指数
1
解决办法
663
查看次数