2016-11-18 2 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") 
       } 

I подумайте, что моя requestData ошибочна. My 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

Вот супер простой способ сделать это. В этом примере я вручную записываю параметры сообщения с помощью быстрой функции, которая возвращает строку, однако вы можете использовать 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

Это не работает для меня :( –

+0

Не могли бы вы объяснить, если вы получили какие-либо ошибки? –

+0

Я не получил сообщение об ошибке, но служба не отправила сообщение на мой телефон. –

Смежные вопросы