J'ai essayé de faire une publication HTTP sur mon hôte local à l'aide de swift pour une application mobile, il imprime Result -> Optional(["user": larry]), ce qui devrait signifier que cela fonctionne mais qu'il ne publie rien sur mon hôte local. Mon code est :

func ReqUsers() -> Void {

        let json = ["user":"larry"]

        do {

            let jsonData = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)

            let url = NSURL(string: "http://192.168.1.318:8080")! /*localhost*/
            let request = NSMutableURLRequest(url: url as URL)
            request.httpMethod = "POST"

            request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
            request.httpBody = jsonData

            let task = URLSession.shared.dataTask(with: request as URLRequest){ data, response, error in
                if error != nil{
                    print("Error -> \(String(describing: error))")
                    return
                }
                do {
                    let result = try JSONSerialization.jsonObject(with: /*data!*/ request.httpBody!, options: .allowFragments) as? [String:AnyObject]
                    print("Result -> \(String(describing: result))")
                    
                } catch {
                    print(response!)
                    print("Error -> \(error)")
                    print("that")
                }
            }

            task.resume()
        } catch {
            print(error)
            print("this")
        }
        print("called")
    }

Merci pour votre temps

Pour plus d'informations sur le backend, il est écrit avec goLang et voici le code :

package main

import (
    "fmt"
    //"os"
    //"io/ioutil"
    //"log"
    "net/http"
)


func main() {
    http.HandleFunc("/", HelloServer)
    http.ListenAndServe(":8080", nil)
   
}

func HelloServer(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello")
}
4
Camille Basbous 31 oct. 2020 à 09:00

1 réponse

Meilleure réponse

Si vous ne voyez pas de journaux sur votre serveur, cela peut être dû à la politique de cache de URLSession.

Essayez de définir la propriété cachePolicy de votre URLRequest sur .reloadIgnoringLocalAndRemoteCacheData ou .reloadIgnoringCacheData et voyez si ça marche:

let url = URL(string: "http://192.168.1.318:8080")! /*localhost*/
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.httpBody = jsonData
request.cachePolicy = .reloadIgnoringLocalAndRemoteCacheData
// or
request.cachePolicy = .reloadIgnoringCacheData
1
gcharita 2 nov. 2020 à 10:02