gpt4 book ai didi

java - 使用 REST API 将 swift 3 webservice 多次数据插入数据库

转载 作者:行者123 更新时间:2023-11-28 10:57:16 25 4
gpt4 key购买 nike

我正在使用 Swift 3 编程作为客户端访问 REST API 服务器,我发送了一次请求和一个响应。但问题是,一旦我发布了我的数据,数据就会被插入两次,并根据第二个插入值获得响应。例如:当我发布新邮件地址时,它插入到数据库中,然后再次迭代并尝试再次插入,我得到的响应是“电子邮件已注册”。我已经尝试了客户端编程中的所有方法。很少有人说服务器在 40 秒后再次重新启动,我不确定是否是这种情况如何解决这个问题。

SWIFT 3 客户端中的代码:(iOS)

func getMailAddress(mailID: String) {
let username = "admin"
let password = "admin"
let loginString = String(format: "%@:%@", username, password)
let loginData: NSData = loginString.data(using: String.Encoding.utf8)! as NSData
let base64LoginString = loginData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
let getUrl = URL(string: "http://localhost/rest/merchantsignup/mailExists/\(mailID)")
var request = URLRequest(url: getUrl!)
request.httpMethod = "GET"
request.setValue(base64LoginString, forHTTPHeaderField: "Authorization")
let urlConnection = NSURLConnection(request: request, delegate: self)
urlConnection?.start()
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if error != nil {
print(error!)
} else {
do {
let myJSON = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments)
print("myJSON:\(myJSON)")
} catch let err as NSError {
print(err)
}
}
}
task.resume()
}

JAVA REST 网络服务中的代码:

@GET
@Path("/mailExists/{emailId}")
@Produces(MediaType.APPLICATION_JSON)
public RestResMessagesVO mailExists(@PathParam("emailId")String emailId){
System.out.println(emailId);
MerchantRegistrationDAO mcdao = new MerchantRegistrationDAO();
RestResMessagesVO resObj = new RestResMessagesVO();
resObj.setMessage(mcdao.ismcEmailorPhoneExists("emailAddress",emailId.trim()));
return resObj;
}

最佳答案

您正在尝试通过基本身份验证建立连接,但这里的实际问题是,当您请求您的服务器时,它被击中了两次1. 您使用请求建立了连接,到那时它已访问服务器一次。2. 然后你为 NSURLConnection 创建了一个对象,你开始连接,它第二次访问服务器。 因此,只有您两次访问您的服务器,并根据第二次服务器访问获得响应。

解决方案:试试这个来解决你的问题:

 let username = "admin"
let password = "admin"
let loginString = String(format: "%@:%@", username, password)
let loginData: NSData = loginString.data(using: String.Encoding.utf8)! as NSData
let base64LoginString = loginData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
let getUrl = URL(string: "Your URL String")
var request = URLRequest(url: getUrl!)
request.httpMethod = "GET"
request.setValue(base64LoginString, forHTTPHeaderField: "Authorization")

let task = URLSession.shared.dataTask(with: request)
{ (data, response, error) in
if error != nil
{
print(error!)
}
else
{
do {
let JSON = try JSONSerialization.jsonObject(with: data!, options: .allowFragments)
print("YOUR RESPONSE: \(JSON)")

}
catch let err as NSError
{
print(err)
}
}
}
task.resume()

关于java - 使用 REST API 将 swift 3 webservice 多次数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555939/

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