我在这里创建了一个form并尝试使用httpwebrequest在其中发布数据。数据未提交到此spreadsheet,我不知道为什么
private const string PostURI = "https://docs.google.com/spreadsheet/formResponse?formkey=dDYyM0MxQUYzZnAwTGFfeFA0VG9VVUE6MQ&ifq";
static void Main(string[] args)
{
BeginGetRequestExample();
Console.Read();
}
private static void BeginGetRequestExample()
{
var request = (HttpWebRequest)HttpWebRequest.Create(PostURI);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(GetRequestCallback), request);
}
private static void GetRequestCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
using (var postStream = request.EndGetRequestStream(asynchronousResult))
{
string postData = "entry.0.single=testdata";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
postStream.Write(byteArray, 0, postData.Length);
}
}
答案 0 :(得分:0)
您的代码中没有位于检查异步作业状态的位置。您可以使用ResetEvents确保等待异步工作完成
声明ManualResetEvent
private static ManualResetEvent workCompleted= new ManualResetEvent(false);
将 workCompleted.WaitOne()添加到您的BeginGetRequestExample.Now此方法将等待异步方法完成。
request.BeginGetRequestStream(new AsyncCallback(GetRequestCallback), request);
workCompleted.WaitOne();//This will block the thread.
将 workCompleted.Set()添加到GetRequestCallback
。set()调用将向BeginGetRequestStream发出执行完成信号
using (var postStream = request.EndGetRequestStream(asynchronousResult))
{
string postData = "entry.0.single=testdata";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
postStream.Write(byteArray, 0, postData.Length);
}
workCompleted.Set();//work completed,signal BeginGetRequestExample.
答案 1 :(得分:0)
根据我的经验...我认为你发布的数据可能不对。
这是原始的HttpPost
POST https://docs.google.com/spreadsheet/formResponse?formkey=dDYyM0MxQUYzZnAwTGFfeFA0VG9VVUE6MQ&ifq HTTP/1.1
Host: docs.google.com
Connection: keep-alive
Content-Length: 62
Cache-Control: max-age=0
Origin: https://docs.google.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
X-Chrome-Variations: CPO1yQEIl7bJAQietskBCKS2yQEIp7bJAQiptskBCLW2yQEIsIPKAQ==
Referer: https://docs.google.com/spreadsheet/viewform?formkey=dDYyM0MxQUYzZnAwTGFfeFA0VG9VVUE6MQ&ifq
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,en-GB;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: PREF=ID=95ae5350cc16c940:U=28fe773a18c2dbe6:LD=en:TM=1345120351:LM=1345194034:GM=1:S=3Cn9QquJ5Czg34G0; __utma=184632636.1591015415.1346839842.1346839842.1346839842.1; __utmz=184632636.1346839842.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); NID=62=1rseSYPhjiIKnlAgPIthlh-KblNw8OVSOJuFL54wW2wX9HmucRXT83vYgz-JAUlgGuFv8BJTQutADeZvxtQnOnnUtOhckpRN6Q39zeRb9yKqCp2p1U-ZB3mhmkPwz4Iz0j3FHeGty9yDqOjlma5rG5GtgRyl6z7YakbICD7ckt11JJm3-jrFemtNg-wH1sqWZWiThPzb4R40Q3RAeohBgvU3-nJ38_VZDG9rA7pTVvQ7jw; HSID=AqYa-X7Si3Broi94c; SSID=AxGpbOiAWCleF5e9z; APISID=8Fgs9inkdycfWieu/AEg1bwhd3Aesfa3XR; SAPISID=G9xcUdWksRD2dzMM/AbmBuqsL_bNcslBTQ; WRITELY_SID=DQAAAGEBAACUg03i_4fbFZEg_gr-iMZ6zg_h5P-tqox77Gw_mLIqgQtDD0OyUGTw0Dn1p5plW1rQnqNuDYrG8XscJCeAyWiL-8p5sM0qtZGUNKX24BgZarvYBWS78x6kEKsoGKibwVKr2r481JBN7Q-nr7gjLw6A6aKD0mezPGP7PHRc7xZ7g1vId50WOyb2_0hqOzJ6nXSu_3y1yce4ursF3aqBfHzbCHnPVN6WNhCjZbkqCGiFNDIcVz-POlyB5QTXxtAYNGUgJdAXpXQPS3ET7MAOLCH4roafbFDi18lQ7qvuvEz1A8QvGNhCi2jnEr_STmkRWfmnVP_0rahkaDpPkFmg2TJd6e8s6xdzu9UL6bxHshacaapu7CEj-pJIL8zq2PVEkJLs7DcvvMIdCDxDOtt9j5Jgmq0uDjto94EvnBnBTcnwWpZZY0-bT9yl6m9Nt3pMgtl4VBYJgwEWjPV46OfYdgJosJKEHXo0wgDs9YomzxHvsQ; S=explorer=gpeJDnKwHily6YMp3ZAyaQ; SS=DQAAAGIBAACUg03i_4fbFZEg_gr-iMZ6cA1_10PYYPfBefa6O8m4JId5S6dOVXANhELN3jPzvZxjjqlGEbGrvah6eNypAvojSKB4X_xdioJLbY3T80h9oBV1doK6KY7-hwrlKj62pjLxQ-ZoHu-pfZc-8WdkowaEPOkg4wS_ZblJfMAykXbufmDMg4u1IPt95A4vI45BBBL71XcT8S4PgI4UfXFkNkX7DqxfOYFUiCnVHyLMaSRE_N9mfdfyLuYAwm_e84G2COiOeEW-0D5dytWlAPznvIgKVbxcdeBosZJsFOc_pgeVVUCCAyQIMLdqaWCv_FE-aO5dV73a2vLOmgETg34VM1fV7fxR0b_hF88njjJpeuQVBu1MgFWWyARsO56ZrJ89QrC7PwyCLNm-lsjf0WXDZz6BbP4zw-U2I_DBxJsQ4XsqXc2663BUK5k9Sg7Yy8ULhjZkxILYzQd016m0yE9cJlHBEx4MMmm6fBDlkzzXs8OIHA; SID=DQAAAF8BAABm0OXzbbbSZWD3Qj4rTcK4dDifbWX0DEgZ3cBs_xxFxCJJj35PBe6ORIspSn-inbK3g4fU6e6OsedvVP11l_Rf9GOA-BucVEYOpL8f7LWSbybhRD9Db9vQWmoCRiterbKY67_4nJYRaaY69djDdpJUXpykAYq5XGCWoX89qQUbkZmixKUZU2dXIPgxdpnEwmSJNcspjuLfJWhRMRnIc4cGhV1osB2W33XriFWZQ-vIfUoIAygrM-a_zpK4-Bw0L4hym8aVdMv2pB9QwEzPFKzNBa7l3PLjs7dHWqu-btHnVNf_j9tZk0GqE3EjrsdSeJpTaRfwW0vBhdemHbPJtIq5DmdAAwNDV3_RM79iS6S1vyszAb_G51ZDWH1-1IR8FjbgTPJT2llGmwYKe9C63LK5_WzqenwoPQnJj5kwUEeBnqqs_9nKOD2cFxDhuVky_Z5AIuhVZAx2sUzgIG8uB1PQ
entry.0.single=abcdefg&pageNumber=0&backupCache=&submit=Submit
这是原始的http响应
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://docs.google.com
Content-Type: text/html; charset=utf-8
X-Robots-Tag: noindex, nofollow, nosnippet
Date: Mon, 29 Oct 2012 09:47:43 GMT
Expires: Mon, 29 Oct 2012 09:47:43 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Server: GSE
Content-Length: 1225
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Thanks!</title>
<link href='/static/spreadsheets/client/css/627030122-form_response_compiled.css' type='text/css' rel='stylesheet'>
<style type="text/css">
.ss-logo {background:transparent url("https://ssl.gstatic.com/docs/spreadsheets/forms/sprites_2.png") no-repeat}
</style></head>
<body><div class="ss-container"><div class="ss-resp-card"><div class="ss-confirmation">TestPost</div>
<div class="ss-custom-resp">เราได้บันทึกคำตอบของคุณไว้แล้ว </div>
<div class="ss-opt-actions">
</div>
<hr class="ss-break">
<div class="ss-footer"><div class="ss-footer-txt"><a class="ss-actions-link" href="https://docs.google.com/spreadsheet/viewform?formkey=dDYyM0MxQUYzZnAwTGFfeFA0VG9VVUE6MQ&ifq">Submit another response</a>
|
<a class="ss-actions-link" href="https://docs.google.com/spreadsheet/newform?ref=submitpage">Create your own form</a></div>
<a class="ss-logo-link" href="https://docs.google.com/"><div class="ss-logo"> </div></a></div></div></div></body></html>
你需要做的就是构建精确的HttpPost。