Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.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视图提交Google表单数据_Ios_Objective C_Form Submit - Fatal编程技术网

使用本机iOS视图提交Google表单数据

使用本机iOS视图提交Google表单数据,ios,objective-c,form-submit,Ios,Objective C,Form Submit,我想知道是否有办法在本机iOS应用程序中创建表单并通过谷歌表单提交。下面是一个我想在iOS应用程序中进行本机操作的网页示例 您可以按如下方式执行: 创建一些uitextfields作为一些输入文本字段 然后使用AFNetworking提交这些表单值 您可以在此帖子中看到如何使用post变量创建URL请求: 通过检查当前表单的HTML,可以找到URL和变量名。在您的情况下,请将帖子发送到URL: https://docs.google.com/forms/d/1vlYPlNi4xJv6JCHpL

我想知道是否有办法在本机iOS应用程序中创建表单并通过谷歌表单提交。下面是一个我想在iOS应用程序中进行本机操作的网页示例


您可以按如下方式执行:

  • 创建一些uitextfields作为一些输入文本字段
  • 然后使用AFNetworking提交这些表单值

  • 您可以在此帖子中看到如何使用post变量创建URL请求:

    通过检查当前表单的HTML,可以找到URL和变量名。在您的情况下,请将帖子发送到URL:

    https://docs.google.com/forms/d/1vlYPlNi4xJv6JCHpLrHD6oSrYgUqWOrzF8z6KJjTVuE/formResponse

    参数将是
    entry.1615511943
    entry.1186557728
    ,等等。您还可以在HTML输入的“name”中找到这些参数

    如下所示设置文档类型:

    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    

    数据本身只是字符串,您必须构建一个UI并从中提取它们。

    是的,有一种方法,我在本报告中使用了这种方法:

    以下是如何设置它的教程:

    下面是执行此操作的代码:

    private static var googleFormLink: String!
    private static var googleFormAppVersionField: String!
    private static var googleFormUserInfoField: String!
    private static var googleFormMethodInfoField: String!
    private static var googleFormErrorTextField: String!
    
    /// Setup Google Form links
    static func setupOnlineLogs(#formLink: String, versionField: String, userInfoField: String, methodInfoField: String, textField: String) {
        googleFormLink = formLink
        googleFormAppVersionField = versionField
        googleFormUserInfoField = userInfoField
        googleFormMethodInfoField = methodInfoField
        googleFormErrorTextField = textField
    }
    
    private static func sendError(#text: String) {
        var url = NSURL(string: googleFormLink)
        var postData = googleFormAppVersionField + "=" + text
        postData += "&" + googleFormUserInfoField + "=" + "anothertext"                
        postData += "&" + googleFormMethodInfoField + "=" + "anothertext" 
        postData += "&" + googleFormErrorTextField + "=" + "anothertext" 
    
        var request = NSMutableURLRequest(URL: url!)
        request.HTTPMethod = "POST"
        request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type")
        request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding)
        var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true)
    }
    

    我开始处理上面Joe的回复(),但在请求中得到了404,而没有在他的URL中的
    /d
    之后添加
    /e
    。通过比较共享表单链接和Joe的链接发现了这一点。进行了一些测试,并使其正常工作。下面是我使用Swift和AlamoFire的代码,因为我的项目中已经有了它。注意:我要传递的
    contactInfo.paramaters
    只是一个简单的结构,它带有一个computed
    parameters
    属性,用于从我的iOS版表单中吐出收集的信息

    func上传(){
    var headers=HTTPHeaders()
    标题[“内容类型”]=“应用程序/x-www-form-urlencoded”
    Alamofire.request(“https://docs.google.com/forms/d/e//formResponse",
    方法:.post,
    参数:contactInfo.paramaters,
    headers:headers.validate().response中的{(response)
    打印(答复)
    }
    }
    
    无需AFN网络,NSURL连接就足够了。
    func upload() {
      var headers = HTTPHeaders()
      headers["Content-Type"] = "application/x-www-form-urlencoded"
      Alamofire.request("https://docs.google.com/forms/d/e/<enter your forms ID here>/formResponse",
                method: .post,
                parameters: contactInfo.paramaters,
                headers: headers).validate().response { (response) in
                  print(response)
      }
    }