2013-07-12 71 views
0
工作

所以我想重做這個代碼,但是C++ https://bitbucket.org/jitbit/sharpgooglevoice/src/0d76122c5bd7f4000352e003c9990d62f2421693/SharpGoogleVoice.cs?at=default無法獲得捲曲與谷歌

不過,我覺得我的代碼是相同的,但它似乎並不奏效。

int SendSMS(string number, string msg) 
{ 
Login(); 

curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/voice/sms/"); 
curl_easy_setopt(curl, CURLOPT_POST, 1); 
number = curl_easy_escape(curl, number,0); 
rnr_se = curl_easy_escape(curl, rnr_se.c_str(),0); 
string data = "sendphoneNumber=" + number; 
data += "&text=" + msg; 
data += "&_rnr_se=" + rnr_se; 
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str()); 
cr = curl_easy_perform(curl); 
} 

然而沒有任何反應。我知道Login()正常工作,因爲我可以登錄並檢查消息。我的輸出是相同的輸出在C#代碼,但出於某種原因,這並不做任何事情

URL格式應該是這個 POST /語音/短信/發送/ phoneNumber的= [電話號碼發短信] &文本= [URL編碼消息] & _rnr_se = [從頁面拉出]

+0

試過調試嗎?如何使用Wireshark比較線路上發送的實際請求? –

+0

在此之前,我只是想我可能會犯一些簡單的錯誤,我忽略了 – user2574427

回答

0

有幾件事情與您指向的原始代碼不匹配;

_webClient.UploadData("https://www.google.com/voice/sms/send"... 

你正在使用;

curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/voice/sms/"); 

請注意不同的URL。也;

PostParameters(new Dictionary<string, string> 
    { 
     {"phoneNumber", number}, 
... 

...而你正在使用...

string data = "sendphoneNumber=" + number; 

注意不同的參數名稱。

+0

URL並沒有不同,我們只是用不同的格式。他們使用/ voice/sms/send,但稍後添加phoneNumber。所以它變成/語音/短信/發送電話號碼,而我說/語音/短信/但後來添加sendphoneNumber,所以它然後變成/語音/短信/發送電話號碼 – user2574427

+0

我可能會誤,但我想我使用curl_easy_setopt來設置一切,然後我使用curl_easy_perform(curl)來實際發送數據。我認爲curl-easy_perform會等同於_webClient.UploadData – user2574427

+0

@ user2574427就我所見,他們總是使用'https:// www.google.com/voice/sms/send'作爲URL,'phoneNumber '''''text'和'_rnr_se'應該作爲'POST'數據中的'POST'參數傳遞,即根本不在URL中。 「GET」數據在URL中傳遞,「POST」數據不在。 –