gpt4 book ai didi

ios - 通过 Swift Alamofire 访问时 JHipster Heroku Oauth2 应用程序出现 500 内部服务器错误

转载 作者:行者123 更新时间:2023-11-28 08:24:34 27 4
gpt4 key购买 nike

我正在尝试通过 IOS Swift 应用程序访问我上传到 Heroku 上的 JHipster 生成的 API。 JHipster 应用程序使用 OAuth2 进行保护。基本上我想实现一个注册功能,我在 IOS 应用程序中提供凭据(电子邮件、登录名和密码),然后调用 JHipster 应用程序上的 /api/register 路径来注册该用户。但是,当我发出 Swift Alamofire 请求时,它会在尝试调用 /api/register 时为我提供状态代码 500。

我在 Heroku 的 JHipster 应用程序: https://j-hipster-test-apiios.herokuapp.com

我的 Swift Alamofire 请求:

class RegisterViewController: UIViewController {

let parameters: Parameters = [
"login": "Hello",
"password": "World",
"email": "Test@googlemail.com"
]


@IBAction func register(_ sender: UIButton) {

let sessionManager = SessionManager()

sessionManager.request("https://j-hipster-test-apiios.herokuapp.com/api/register", method: .post, parameters: parameters).validate().responseJSON { response in


print("----------------------------")
print(response)
print("----------------------------")

sessionManager.session.invalidateAndCancel()
}

}

我的 Xcode 日志(responseValidationFailed 错误是由请求后的 .validate() 方法引起的,因为它期望状态码介于 200 和 299 之间):

 FAILURE: 
responseValidationFailed(Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(500))

我的 Heroku 日志:

2016-11-04T17:38:36.148902+00:00 heroku[router]: at=info method=POST path="/api/register" 
host=j-hipster-test-apiios.herokuapp.com request_id=7a1e1345-a8a5-43f2-abbc-4805037a47ef
fwd="93.210.40.139" dyno=web.1 connect=0ms service=13ms status=500 bytes=317

所以主要问题是,为什么我在调用 JHipster api 的 /api/register 路径时得到 500 状态码?

提前致谢!

最佳答案

我终于解决了这个问题。这不是 JHipster 问题,而是 Alamofire 解析问题。我总是使用无效的 json 数据发出请求,因为我没有在我的 Swift 代码中验证我的凭据字典。如果我使用 JSONSerialization.data(withJSONObject: parameters) 序列化我的 json 数据,我可以注册一个帐户。为了完整起见,这是我的解决方案:

class RegisterViewController: UIViewController {

@IBAction func register(_ sender: UIButton) {

let url = NSURL(string: "https://j-hipster-test-apiios.herokuapp.com/api/register")

var request = URLRequest(url: url as! URL)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let parameters: Parameters = [

"activated": true,
"authorities": [ "ROLE_USER" ],
"createdBy": "TestName",
"createdDate": "2016-11-04T20:42:20.301Z",
"login": "Hello",
"password": "World",
"email": "Test@googlemail.com"
"firstName": "TestName",
"id": 0,
"langKey": "en",
"lastModifiedBy": "TestName",
"lastModifiedDate": "2016-11-04T20:42:20.302Z",
"lastName": "TestName",


]

request.httpBody = try! JSONSerialization.data(withJSONObject: parameters)


let sessionManager = SessionManager()
//self.alamofireManager = sessionManager


sessionManager.request(request).responseJSON { response in

switch response.response!.statusCode {
case 201: print("Created")
case 400: print("Username already in use")
case 500: print("Error!")
default: print("Error!")
}

sessionManager.session.invalidateAndCancel()
}

}

}

关于ios - 通过 Swift Alamofire 访问时 JHipster Heroku Oauth2 应用程序出现 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40429124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com