2016-11-18 59 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

我没有收到错误信息,但服务没有将消息发送到我的手机 –