请求休息后 API 在邮递员中工作,但在阿拉莫火中不起作用



我有一个返回非常简单的 JSON 的 API。

首先,包含 api 的服务器在我的本地计算机(本地主机)中,在这种情况下,一切正常。

当我尝试从iPhone应用程序(使用Alamofire)连接到托管API不起作用时,我将api传递给了虚拟主机

Alamofire.request(.POST, "https://domain.com/api/search", parameters: ["ubicacion": ubicacionId, "fecha":"(dateFormatter.stringFromDate(fecha))"], encoding: .URL)
            .responseJSON { response in
                switch response.result {
                case .Success:
                    print(response.request)  // original URL request
                    print(response.response) // URL response
                    print(response.result)   // result of response serialization
                    self.JSON = response.result.value!
                    //llamar el delegate
                    self.delegate.devolverjson(self.JSON)
                case .Failure(let error):
                    print(response.request)  // original URL request
                    print(response.response) // URL response
                    print(response.result)   // result of response serialization
                    self.JSON = ["error":error]
                    //llamar el delegate
                    self.delegate.devolvererror(self.JSON)
                }
        }

在这种情况下,response.response是:

{ URL: https://domain.com/api/search } { status code: 405, headers {
    "Cache-Control" = "no-cache, private";
    Connection = "Keep-Alive";
    "Content-Type" = "text/html; charset=UTF-8";
    Date = "Thu, 07 Jul 2016 18:24:26 GMT";
    "Keep-Alive" = "timeout=3, max=30";
    Server = "Apache Phusion_Passenger/4.0.10 mod_bwlimited/1.4 mod_fcgid/2.3.9";
    "Transfer-Encoding" = Identity;
    "X-Powered-By" = "PHP/5.6.22";
    allow = POST;
} })

response.result .Failure

错误是

error: {
    error = "Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}";
}

当我从Postman连接到api(相同的URL:https://domain.com/api/search)时,api返回正确的信息(JSON),包括这个标头。

Cache-Control →no-cache
Connection →Keep-Alive
Content-Type →application/json
Date →Thu, 07 Jul 2016 18:23:38 GMT
Keep-Alive →timeout=3, max=30
Server →Apache Phusion_Passenger/4.0.10 mod_bwlimited/1.4 mod_fcgid/2.3.9
Transfer-Encoding →chunked
X-Powered-By →PHP/5.6.22

为什么如果API与Postman一起工作,而不是与Alamofire一起工作?

如果英语不正确,请原谅

我今天遇到了类似的问题。我的解决方法是更改请求的编码。

我在URLEncoding()JSONEncoding.default之间切换

您可以尝试适合您请求的各种其他编码。

尝试在网址中添加尾部斜杠:

https://domain.com/api/search/

response.request 是否与您在 Postman 中尝试的 url 匹配?你试过 Alamofire.request(.GET, url) 而不是 .发布?我在一个项目中的参数遇到了一些问题,所以我之前格式化了我的 url,并使用了没有参数但格式化的 url 的 Alamofire。

我在 Swift 4.2 Xcode 10 中遇到了同样的错误。

我在邮递员中使用 URL 作为: 18.222.156.118/Service/v1/SignIn并传递参数

UserPhone:7021844116 RequestCd:R28

它在邮递员中工作正常。

当我在Alamofire中使用相同的 URL 时

    let parameters: Parameters = ["UserPhone": self.textfieldPhoneNumber.text!,
                                  "RequestCd": "R28"]
    // All three of these calls are equivalent
    Alamofire.request("18.222.156.118/Service/v1/SignIn",method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in
        print("Result: (String(describing: response.request))")
        print("Result: (String(describing: response.response))")
        print("Result: (response.result)")
        MBProgressHUD.hide(for: self.view, animated: true)
        if let json = response.result.value as? [String:Any] {
            print("JSON VALUE --- (json)")
            if json["ErrorCode"] as?  Int ==  0 {
              print("got success")
            }else{
                 Print("error")
            }
        }
    }

我收到错误Domain=NSURLErrorDomain Code=-1002 "unsupported URL"我在初始时添加了http://

http://18.222.156.118/Service/v1/SignIn正确的网址它终于奏效了。 由于谷歌邮递员内部添加了hhttp:\。

相关内容

  • 没有找到相关文章

最新更新