gpt4 book ai didi

php - 快速发送http请求

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:27 29 4
gpt4 key购买 nike

我正在尝试使用 swift 向 PHP 服务器发送 http 请求。我设法发送数据并读取服务器的响应。我只希望我的 php 服务器根据 json 请求中存在的请求类型执行不同的操作

这是我发送请求的方法:

func sendHttpRequests(data : Dictionary<String, AnyObject>) //-> NSDictionary
{
let url = NSURL ( string : "http://aaa.bbb.ccc.ddd")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL : url)

let payload1 = "\"r\":\"login\""
request.HTTPMethod = "POST"

request.HTTPBody = payload1.dataUsingEncoding(NSUTF8StringEncoding);


NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{
(response, data, error) in

if let httpResponse = response as? NSHTTPURLResponse {
let responseCode = httpResponse.statusCode
print("Request Status \(responseCode)")
}
do
{
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)

print("Json received \(json)")

if let currItem = json["myKey"] as? String
{
print(currItem)
}
}
catch
{
print("error: \(error)")
}
}
}

当我用这个 php 脚本发回响应时,我成功地收到了响应:

<?php
$arr = array("myKey" => "myValue");
echo json_encode($arr);
?>

相反,当我尝试这样的事情时:

<?php
$postVar = $_POST['r'];

if (!empty($postVar))
{
$arr = array("status" => "it's ok");
echo json_encode($arr);
}
else
{
$arr = array("status" => "something wrong");
echo json_encode($arr);
}
?>

我收到这个错误:

Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}

最佳答案

马可,

不要使用 NSMutableURLRequests,使用 session ...前者已被 Apple 弃用。

这是一个例子..

func getMetaData(lePath:String, completion: (string: String?, error: ErrorType?) -> Void) {
// **** get_metadata ****
let request = NSMutableURLRequest(URL: NSURL(string: "https://api.dropboxapi.com/2/files/get_metadata")!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"

request.addValue("Bearer ab-blah", forHTTPHeaderField: "Authorization")
request.addValue("application/json",forHTTPHeaderField: "Content-Type")
request.addValue("path", forHTTPHeaderField: lePath)
let cursor:NSDictionary? = ["path":lePath]
do {
let jsonData = try NSJSONSerialization.dataWithJSONObject(cursor!, options: [])
request.HTTPBody = jsonData
print("json ",jsonData)
} catch {
print("snafoo alert")
}

let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
if let error = error {
completion(string: nil, error: error)
return
}
let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Body: \(strData)\n\n")
do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers);
self.jsonParser(jsonResult,field2file: "ignore")
for (key, value) in self.parsedJson {
print("key2 \(key) value2 \(value)")
}

completion(string: "", error: nil)
} catch {
completion(string: nil, error: error)
}
})
task.resume()

}

关于php - 快速发送http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35655440/

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