2016-11-18 7 views
0

DoPostMethodで配列を送信できません。 PHPコードは機能していますが、私はC#.PHPコードに変換することはできませんApacheサーバーにHttpPost配列を送信する方法

$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が間違っていると思います。私のRequestDataは以下の通りです:

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

どうすればいいですか?ありがとう

+0

{numaralar = \ "{0000000000} \"}で見ることができ、あなたの他の人と異なっているこれは –

答えて

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

これを行うには、基本的な方法があります。この例では、私は手動で文字列を返すクイック関数を使用してポストパラメータを書き出していますが、JavascriptSerializerを使用してC#配列を正しく変換することができます(また、ウェブサービスから返されたインバウンド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

をさPARAMATERS –

+0

エラーを受け取りましたか? –

+0

エラーは発生しませんでしたが、サービスは自分の電話機にメッセージを送信しませんでした。 –

関連する問題