我正在创建一个应用程序来下载我的大学时间表。我首先用 Java 完成了 REST 调用,以演示一个运行良好的原型(prototype)。现在我想在 Swift 中使用 Alamofire(或任何其他有效的工具)来完成它。
下面是我试图复制的 Java 中的 REST 调用。
Client client = Client.create();
String authString = "UID=XXXXX&PASS=XXXXX";
byte[] authBytes = authString.getBytes();
WebResource webResouce = client.resource("https://access.adelaide.edu.au/sa/login.asp");
ClientResponse response = webResource.post(ClientResponse.class, authBytes);
if (response.getStatus != 302) {
throw new RuntimeException("Failed: HTTP code: " + response.getStatus());
}
但是我无法正确发送字节。服务器将实际接受任何字节数据(因此您可以查看它是否可以在没有 UID 或 PASS 的情况下工作)并以 302 响应,这表明它可以工作。否则它会发送 200,这意味着它没有。
我尝试过几次在参数中发送 UID 和 PASS,获取它们的字节,然后将它们放入参数等,但到目前为止似乎没有任何效果。
任何帮助都会很棒,谢谢!
最佳答案
您应该使用 Alamofire 的自定义编码技术(类似于此)。这是我学习 Swift 的第 3 个小时,请耐心等待。
struct ByteEncoding: ParameterEncoding {
private let data: Data
init(data: Data) {
self.data = data
}
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = try urlRequest.asURLRequest()
urlRequest.httpBody = data
return urlRequest
}
}
Alamofire.request(url: "url", method: .post, parameters: nil, encoding: ByteEncoding(data: authBytesAsData)
关于ios - 如何使用 Alamofire 发送字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29208322/