1# has useful print method 2 3 Code 4 html_form(html, base_url = "http://google.com")[[1]] 5 Output 6 <form> 'test' (POST http://google.com/test-path) 7 <field> (select) select: 8 <field> (text) name: Hadley 9 <field> (password) name: ****** 10 <field> (button) clickMe: 11 <field> (textarea) address: ABCDEF 12 13--- 14 15 Code 16 html_form(html)[[1]]$fields[[2]] 17 Output 18 <field> (text) name: Hadley 19 20# handles different encoding types 21 22 Code 23 convert_enctype("unknown") 24 Warning <warning> 25 Unknown enctype (unknown). Defaulting to form encoded. 26 Output 27 [1] "form" 28 29# can set values of inputs 30 31 Code 32 form <- html_form_set(form, hidden = "abc") 33 Warning <warning> 34 Setting value of hidden field 'hidden'. 35 36# has informative errors 37 38 Code 39 html_form_set(form, text = "x") 40 Error <rlang_error> 41 Can't change value of input with type submit: 'text'. 42 43--- 44 45 Code 46 html_form_set(form, missing = "x") 47 Error <rlang_error> 48 Can't set value of fields that don't exist: ' missing ' 49 50# useful feedback on invalid forms 51 52 Code 53 submission_build(form, NULL) 54 Error <rlang_error> 55 `form` doesn't contain a `action` attribute 56 57--- 58 59 Code 60 x <- submission_build(form, NULL) 61 Warning <warning> 62 Invalid method (FOO), defaulting to GET 63 64# handles multiple buttons 65 66 Code 67 vals <- submission_build_values(form, NULL) 68 Message <message> 69 Submitting with 'one' 70 71--- 72 73 Code 74 submission_build_values(form, 3L) 75 Error <rlang_error> 76 Numeric `submit` out of range 77 78--- 79 80 Code 81 submission_build_values(form, "three") 82 Error <rlang_error> 83 No <input> found with name 'three'. 84 i Possible values: one, two 85 86--- 87 88 Code 89 submission_build_values(form, TRUE) 90 Error <rlang_error> 91 `submit` must be NULL, a string, or a number. 92 93# can submit using three primary techniques 94 95 Code 96 show_response(html_form_submit(form)) 97 Output 98 GET 99 Query string: x=1&x=2&y=3 100 101 Code 102 form$method <- "POST" 103 show_response(html_form_submit(form)) 104 Output 105 POST application/x-www-form-urlencoded 106 Query string: 107 x=1&x=2&y=3 108 Code 109 form$enctype <- "multipart" 110 show_response(html_form_submit(form)) 111 Output 112 POST multipart/form-data; boundary=---<divider> 113 Query string: 114 ---<divider> 115 Content-Disposition: form-data; name="x" 116 117 1 118 ---<divider> 119 Content-Disposition: form-data; name="x" 120 121 2 122 ---<divider> 123 Content-Disposition: form-data; name="y" 124 125 3 126 ---<divider>-- 127 128 129