POST विधि के साथ स्विफ्ट में HTTP अनुरोध




swift parameters (5)

मैं एक यूआरएल को पोस्ट 2 पैरामीटर पोस्ट करने के लिए स्विफ्ट में एक HTTP अनुरोध चलाने की कोशिश कर रहा हूं।

उदाहरण:

लिंक: www.thisismylink.com/postName.php

पैरामीटर:

id = 13
name = Jack

ऐसा करने का सबसे आसान तरीका क्या है?

मैं प्रतिक्रिया भी पढ़ना नहीं चाहता हूं। मैं बस एक PHP फ़ाइल के माध्यम से अपने डेटाबेस पर परिवर्तन करने के लिए भेजना चाहता हूँ।


स्विफ्ट 3 में आप कर सकते हैं:

let url = URL(string: "http://www.thisismylink.com/postName.php")!
var request = URLRequest(url: url)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
let postString = "id=13&name=Jack"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
    guard let data = data, error == nil else {                                                 // check for fundamental networking error
        print("error=\(error)")
        return
    }

    if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
        print("statusCode should be 200, but is \(httpStatus.statusCode)")
        print("response = \(response)")
    }

    let responseString = String(data: data, encoding: .utf8)
    print("responseString = \(responseString)")
}
task.resume()

यह मौलिक नेटवर्किंग त्रुटियों के साथ-साथ उच्च स्तरीय HTTP त्रुटियों दोनों के लिए जांच करता है।

स्विफ्ट 2 प्रस्तुति के लिए इस उत्तर के पिछले संशोधन देखें।


मेरी लॉगिंग लाइब्रेरी में उपयोग की जाने वाली विधि का पालन करता है: https://github.com/goktugyil/QorumLogs

यह विधि Google फॉर्म के अंदर HTML फॉर्म भरती है।

    var url = NSURL(string: urlstring)

    var request = NSMutableURLRequest(URL: url!)
    request.HTTPMethod = "POST"
    request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type")
    request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding)
    var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true)

@IBAction func btn_LogIn(sender: AnyObject) {

    let request = NSMutableURLRequest(URL: NSURL(string: "http://demo.hackerkernel.com/ios_api/login.php")!)
    request.HTTPMethod = "POST"
    let postString = "email: [email protected] & password: testtest"
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request){data, response, error in
        guard error == nil && data != nil else{
            print("error")
            return
        }
        if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200{
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(response)")
        }
        let responseString = String(data: data!, encoding: NSUTF8StringEncoding)
        print("responseString = \(responseString)")
    }
    task.resume()
}

let session = URLSession.shared
        let url = "http://...."
        let request = NSMutableURLRequest(url: NSURL(string: url)! as URL)
        request.httpMethod = "POST"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        var params :[String: Any]?
        params = ["Some_ID" : "111", "REQUEST" : "SOME_API_NAME"]
        do{
            request.httpBody = try JSONSerialization.data(withJSONObject: params, options: JSONSerialization.WritingOptions())
            let task = session.dataTask(with: request as URLRequest as URLRequest, completionHandler: {(data, response, error) in
                if let response = response {
                    let nsHTTPResponse = response as! HTTPURLResponse
                    let statusCode = nsHTTPResponse.statusCode
                    print ("status code = \(statusCode)")
                }
                if let error = error {
                    print ("\(error)")
                }
                if let data = data {
                    do{
                        let jsonResponse = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions())
                        print ("data = \(jsonResponse)")
                    }catch _ {
                        print ("OOps not good JSON formatted response")
                    }
                }
            })
            task.resume()
        }catch _ {
            print ("Oops something happened buddy")
        }

स्विफ्ट 3 सरल समाधान:

var components = URLComponents(string: "https://www.myAwesomeURL.com/")
components?.queryItems = [
    URLQueryItem(name: "client_id", value: myClientID),
    URLQueryItem(name: "client_secret", value: myClientSecret),
    URLQueryItem(name: "someCode", value: myAwesomeCode),
]

guard let url = components?.url else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"

और वहां आप यूआरएल और क्वेरी पैरामीटर के साथ एक पोस्ट अनुरोध है !





httprequest