Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.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 向.Net服务器发送Http请求_Ios_Swift_Http_Alamofire - Fatal编程技术网

Ios 向.Net服务器发送Http请求

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

我想向.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(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方法中的回复,我就是这么做的。我正在更新我的问题。请看