2016-11-18 73 views
0

我無法使用DoPostMethod發送我的數組。 PHP代碼是工作,但我不能將其轉換爲C#代碼.PHP是如何將陣列HttpPost發送到Apache服務器

$numbers = array('50XXXXXXXX', '50XXXXXXXX', '50XXXXXXXX', '50XXXXXXXX'); 
$message = 'TEST'; 
$title = 'MAS API'; 
$veriler = array(
'apiNo' =>'1', 
'user' =>’user_name’, 
'pass' =>'pasword', 
'mesaj'=>$message, 
'numaralar' =>$numbers, 
'baslik' =>$title, 
); 
$ozel_mesaj = sms_gonder("http://------",$veriler); 

我的代碼如下

DoRequest(string requestUrl, string requestMethod, string requestData){  
    WebRequest request = WebRequest.Create(requestUrl); 

       request.Method = requestMethod; 


       string postData = requestData; 
       byte[] byteArray = Encoding.UTF8.GetBytes(postData); 


       request.ContentType = "application/x-www-form-urlencoded"; 


       request.ContentLength = byteArray.Length; 


       Stream dataStream = request.GetRequestStream(); 


       dataStream.Write(byteArray, 0, byteArray.Length); 


       dataStream.Close(); 


       WebResponse response = request.GetResponse(); 


       Console.WriteLine(((HttpWebResponse)response).StatusDescription); 


       dataStream = response.GetResponseStream(); 


       StreamReader reader = new StreamReader(dataStream); 


       this.ServerResponse = reader.ReadToEnd(); 


       reader.Close(); 
       dataStream.Close(); 
       response.Close();} 

,但我可以用AJAX方法

$.ajax({ 
       "url": "myUrl", 
       "type": "post", 
       data:{ 
        "apiNo": "apiNo", 
        "user": "user_name", 
        "pass": "password", 
        "mesaj": "DENEME123", 
        "numaralar":"numbers", 
        "baslik":"baslik" 
       }, 
       success: function (data) { 
        if (data != NULL) 
         alert(data) 
        else 
         alert("Kayıt Eklenemedi") 
       } 

我送認爲我的requestData是錯誤的。我的請求數據如下:

string xmlRequest = "[{{apiNo=\"apiNo\"}, {user=\"user_name\"},{pass=\"password\"},{mesaj=\"DENEME2\"},{numaralar=\"{0000000000}\"},{baslik=\"baslik\"}}]"; 

我該怎麼做?謝謝

+0

{numaralar = \ 「{0000000000} \」}是從別人PARAMATERS不同 –

回答

0

我用這個

 string URL = "myURL"; 
    WebClient webClient = new WebClient(); 


    NameValueCollection formData = new NameValueCollection(); 
    formData["apiNo"] = "apiNo"; 
     formData["user"] = "user"; 
     formData["pass"] = "pass"; 
     formData["baslik"] = "baslik"; 
     formData["numaralar"] = "{numaralar}"; 
     formData["mesaj"] =" mesaj"; 

    byte[] responseBytes = webClient.UploadValues(URL, "POST", formData); 
    string responsefromserver = Encoding.UTF8.GetString(responseBytes); 
    Console.WriteLine(responsefromserver); 
    webClient.Dispose(); 

解決我的問題,你可以看看這個link

0

這是一個超級基本的方式來做到這一點。在這個例子中,我用一個快速函數寫出了post參數,返回一個字符串,但是,您可以使用JavascriptSerializer來正確轉換一個C#數組(以及讀取由web服務返回的入站json),這在another post答案中推薦。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Net; 

namespace doPostExampleForStackOverflow 
{ 
static class Program 
{ 

    [STAThread] 
    static void Main() 
    { 
     string postReturn = doPostCall(); 
     MessageBox.Show(postReturn); 
     Application.Exit(); 
    } 

    static string doPostCall() 
    { 
     string URI = "https://webserver.com/post.php"; 
     string myParameters = "username=" + Environment.UserName; /* Get local username (Windows) */ 
      string result; 

      using (WebClient wc = new WebClient()) 
      { 
       wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
       result = wc.UploadString(URI, myParameters); 
      } 
      if (result.Length <= 0) { 
       return "Nothing came back from the webserver."; 
      } else { 
       return result; 
      } 
     } 
    } 
} 
+0

這是不爲我工作:( –

+0

您能否進一步解釋?您是否收到任何錯誤? –

+0

我沒有收到錯誤信息,但服務沒有將消息發送到我的手機 –

相關問題