2013-07-12 43 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”数据不在。 –