2017-07-12 5 views
0

Je veux exécuter un CURL POST pour envoyer un message SMS via le service API Plivo. Je le fais en utilisant HttpWebRequest en C# (voir ci-dessous).Convertir CURL "-i --user" en C# HttpWebRequest

Parametres comme comme suit: PostURL = "https://api.plivo.com/v1/Account/MA **************** M2/message/' » JSONRequest == « src = + 972545675453 & dst = 0545675453 & text = TEST »

Dans leurs documents que je dois à l'utilisateur le paramètre suivant: -i --user AUTH_ID: auth_token

Je ne sais pas comment mettre en œuvre cela, mais il fonctionne pas (erreur 401 -unauthorised)
J'ai essayé de l'utiliser à la place paramètre auth dans mon code comme suit: auth == "MA **************** MM2: Yj ********************** * M5ZjA4"

Besoin d'un conseil

Merci

Voici mon code:

public static SqlString POSTSG(String POSTurl, String auth, SqlString JSONRequest) 
{ 
    SqlPipe pipe = SqlContext.Pipe; 



    //Create Request 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(POSTurl); 
    myHttpWebRequest.Method = "POST"; 


    myHttpWebRequest.Headers.Add("Authorization", auth); 
    myHttpWebRequest.ContentType = "application/json; charset=utf-8"; 
    StreamWriter streamWriter = new StreamWriter(myHttpWebRequest.GetRequestStream(), System.Text.Encoding.UTF8); 
    streamWriter.Write(JSONRequest); 
    streamWriter.Flush(); 
    streamWriter.Close(); 

    // Get the response 
    HttpWebResponse httpResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 

    // Create a new read stream for the response body and read it 
    StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()); 
    SqlString result = streamReader.ReadToEnd(); 


    return (result); 





} 
+1

La meilleure méthode consiste à envoyer un message sans application, puis à suivre les messages à l'aide d'un renifleur tel que wireshark ou fiddler. Vous apprendrez beaucoup. Puis modifiez votre code pour l'envoyer comme sans votre application. – jdweng

Répondre

0

nécessaire pour envoyer l'utilisateur: passer comme des informations d'identification de réseau au lieu de auth. et utilisez 'application/json' comme type de contenu.

[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)] 
public static SqlString POST(String POSTurl, String auth,String user, String pass, String ContentType, SqlString JSONRequest) 
{ 
    SqlPipe pipe = SqlContext.Pipe; 



    //Create Request 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(POSTurl); 
    myHttpWebRequest.Method = "POST"; 
    if (user != null) { myHttpWebRequest.Credentials = new NetworkCredential(user, pass); } 
    else if (auth!=null) { myHttpWebRequest.Headers.Add("Authorization", auth); } 
    myHttpWebRequest.ContentType = ContentType; 
    StreamWriter streamWriter = new StreamWriter(myHttpWebRequest.GetRequestStream()); 
    streamWriter.Write(JSONRequest); 
    streamWriter.Flush(); 
    streamWriter.Close(); 

    // Get the response 
    HttpWebResponse httpResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 

    // Create a new read stream for the response body and read it 
    StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.UTF8); 
    SqlString result = streamReader.ReadToEnd(); 



    return (result); 

}