Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在SWIFT+中请求json时出错;网间网操作系统_Ios_Json_Swift_Http Post - Fatal编程技术网

Ios 在SWIFT+中请求json时出错;网间网操作系统

Ios 在SWIFT+中请求json时出错;网间网操作系统,ios,json,swift,http-post,Ios,Json,Swift,Http Post,我通过json请求一些数据,我是iOS版SWIFT的新手,所以我不知道代码中有什么问题: var URL="http://X.X.X.X.X/Api/UserManagement/getMobileUser"; var UserId=uname.text; var pword=passwd.text; var PostData: NSString = "{\"data\":{},\"action\":\"System\",\"method\":\"getMobileUse

我通过json请求一些数据,我是iOS版SWIFT的新手,所以我不知道代码中有什么问题:

var URL="http://X.X.X.X.X/Api/UserManagement/getMobileUser";
    var UserId=uname.text;
    var pword=passwd.text;
    var PostData: NSString = "{\"data\":{},\"action\":\"System\",\"method\":\"getMobileUser\",\"username\":\" mpc01\",\"password\":\"mpc01\",\"type\":\"rpc\",\"tid\":\"144\"}"
    let request = NSMutableURLRequest(URL: NSURL(string: URL)!)
    request.HTTPMethod = "POST"

    let postString = PostData
    //var st:NSData = PostData.dataUsingEncoding(NSUTF8StringEncoding)!
   // request.HTTPBody = PostData.dataUsingEncoding(NSUTF8StringEncoding)

    request.HTTPBody = (postString as NSString).dataUsingEncoding(NSUTF8StringEncoding)


   //let data = (postString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        if error != nil {
            println("error=\(error)")
            return
        }

        println("response = \(response)")


        let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
        println("responseString = \(responseString)")

    }
    task.resume()
我得到的答复是:

响应={URL:}{状态代码:500,标题{ “缓存控制”=“无缓存”; “内容长度”=36; “内容类型”=“应用程序/json;字符集=utf-8”; 日期=“2015年1月3日星期六06:11:51 GMT”; Expires=“-1”; Pragma=“无缓存”; Server=“Microsoft IIS/7.5”; “X-AspNet-Version”=“4.0.30319”; “X-Powered-By”=“ASP.NET”; } }
responseString=Optional({“Message”:“发生了一个错误。”})

我在尝试向MailGun发布我在应用程序中实现的一些自动电子邮件时遇到了类似的问题

我能够通过一个大型HTTP响应使其正常工作。我将完整路径放在Keys.plist中,以便将代码上载到github,并将一些参数分解为变量,以便以后以编程方式进行设置

// Email the FBO with desired information
// Parse our Keys.plist so we can use our path
var keys: NSDictionary?

if let path = NSBundle.mainBundle().pathForResource("Keys", ofType: "plist") {
    keys = NSDictionary(contentsOfFile: path)
}

if let dict = keys {
    // variablize our https path with API key, recipient and message text
    let mailgunAPIPath = dict["mailgunAPIPath"] as? String
    let emailRecipient = "bar@foo.com"
    let emailMessage = "Testing%20email%20sender%20variables"

    // Create a session and fill it with our request
    let session = NSURLSession.sharedSession()
    let request = NSMutableURLRequest(URL: NSURL(string: mailgunAPIPath! + "from=FBOGo%20Reservation%20%3Cscheduler@<my domain>.com%3E&to=reservations@<my domain>.com&to=\(emailRecipient)&subject=A%20New%20Reservation%21&text=\(emailMessage)")!)

    // POST and report back with any errors and response codes
    request.HTTPMethod = "POST"
    let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
        if let error = error {
            print(error)
        }

        if let response = response {
            print("url = \(response.URL!)")
            print("response = \(response)")
            let httpResponse = response as! NSHTTPURLResponse
            print("response code = \(httpResponse.statusCode)")
        }
    })
    task.resume()
}
//通过电子邮件向FBO发送所需信息
//解析Keys.plist以便使用路径
var键:NSDictionary?
如果let path=NSBundle.mainBundle().pathForResource(“键”,类型为“plist”){
keys=NSDictionary(contentsOfFile:path)
}
如果让dict=keys{
//使用API密钥、收件人和消息文本更改https路径
让mailgunAPIPath=dict[“mailgunAPIPath”]作为?字符串
让emailRecipient=”bar@foo.com"
let emailMessage=“测试%20电子邮件%20发件人%20变量”
//创建一个会话并用我们的请求填充它
let session=NSURLSession.sharedSession()
let request=NSMutableURLRequest(URL:NSURL(字符串:mailgunAPIPath!+“from=FBOGo%20保留%20%)3Cscheduler@.com%3E&to=reservations@.com&收件人=\(emailRecipient)&subject=A%20新的%20预订%21&text=\(emailMessage)!)
//发布并报告所有错误和响应代码
request.HTTPMethod=“POST”
让task=session.dataTaskWithRequest(请求,completionHandler:{(数据,响应,错误)在
如果let error=error{
打印(错误)
}
如果让响应=响应{
打印(“url=\(response.url!)”)
打印(“响应=\(响应)”)
让httpResponse=响应为!NSHTTPURLResponse
打印(“响应代码=\(httpResponse.statusCode)”)
}
})
task.resume()
}
Mailgun路径在Keys.plist中是一个名为mailgunAPIPath的字符串,其值为:

https://API:key-<my key>@api.mailgun.net/v3/<my domain>.com/messages?
https://API:key-@api.mailgun.net/v3/.com/messages?

希望这有帮助

我假设您之前(使用其他客户机)已经测试过服务API,并且可以正常工作。那么您创建的HTTP请求不正确。我建议您尝试设置至少另外两个HTTP头:
Content-Type
application/json
Content-Length
到UTF-8编码数据的长度。好的,我将尝试一下