Ios 向.Net服务器发送Http请求
我想向.Net服务器发送post请求。这是我的post请求代码:Ios 向.Net服务器发送Http请求,ios,swift,http,alamofire,Ios,Swift,Http,Alamofire,我想向.Net服务器发送post请求。这是我的post请求代码: public func SendPostHttpRequest(baseURL: String, parameter: [String:Any], closure:@escaping ((_ success:JSON,_ error:NSError?) -> Void)) { let manager = Alamofire.SessionManager.default if let url = URL(s
public func SendPostHttpRequest(baseURL: String, parameter: [String:Any], closure:@escaping ((_ success:JSON,_ error:NSError?) -> Void)) {
let manager = Alamofire.SessionManager.default
if let url = URL(string: baseURL) {
var urlRequest = URLRequest(url: url)
urlRequest.setValue("text/html; charset=utf-8", forHTTPHeaderField: "Content-Type")
urlRequest.setURLEncodedFormData(parameters: parameter)
manager.request(urlRequest).responseString { response in
debugPrint(" HTML error -------> \(response)")
}
manager.request(urlRequest).responseJSON { response in
switch response.result {
case .success(let JSON) :
closure(JSON,nil)
case .failure(let error):
closure(nil,error as NSError)
debugPrint("get error ---> \((error.localizedDescription)) ")
}
}
}
}
这是为要请求的set-URLEncodedFormData定义扩展名
extension URLRequest {
private static let alloweCharacters = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -_.*@$!#/:+[]\n")
public mutating func setURLEncodedFormData(parameters: [String: Any]) {
var encodedParameters = ""
for (key, value) in parameters {
if !encodedParameters.isEmpty {
encodedParameters += "&"
}
encodedParameters += URLRequest.urlEncoded(value: key) ?? ""
encodedParameters += "="
let valuee = value
if let boolValue = valuee as? Bool {
encodedParameters += "\(boolValue)"
}
if let intValue = valuee as? Int {
encodedParameters += "\(intValue)"
}
if let stringValue = valuee as? String {
encodedParameters += (URLRequest.urlEncoded(value: stringValue) ?? "")
}
}
self.httpMethod = "POST"
self.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
self.httpBody = encodedParameters.data(using: .utf8)
}
private static func urlEncoded(value: String?) -> String? {
return value?.addingPercentEncoding(withAllowedCharacters: alloweCharacters)!.replacingOccurrences(of: " ", with: "")
}
}
我在向服务器发送不同类型的变量时遇到了一个问题。
在服务器端,我遇到以下错误:
对象引用未设置为对象的实例
我认为,因为我将所有参数发送到字符串,服务器端无法计算bool和integer变量
这是请求对象类,我现在的问题是integer中的参数类型是否以integer类型发送到服务器或字符串
class RegisterRequest: NSObject {
var Usertoken: String!
var ProffessionId: Int?
override init() {
self.Usertoken = ""
self.ProvinceId = nil
}
}
您的服务器接受什么格式?例如,对于服务器端的Integer格式,我应该发送Integer参数。@支持的服务器和内容类型是content type:application/x-www-form-urlencodedf for
application/x-www-form-urlencoded
,发送到服务器的HTTP
消息的主体本质上是一个巨大的查询字符串——名称/值对用符号(&)分隔,名称与值用等号(=)分隔。例如:MyVariableOne=ValueOne&myvariable2=ValueTwo
@感谢您在setURLEncodedFormData方法中的回复,我就是这么做的。我正在更新我的问题。请看