【问题标题】:Convert CURL "-i --user" to C# HttpWebRequest将 CURL "-i --user" 转换为 C# HttpWebRequest
【发布时间】:2017-07-12 06:39:24
【问题描述】:

我想运行 CURL POST 以通过 Plivo API 服务发送 SMS 消息。

我通过在 C# 中使用 HttpWebRequest 来实现(见下文)。

参数如下: POSTurl = "https://api.plivo.com/v1/Account/MA****************M2/消息/'" JSONRequest == "src=+972545675453&dst=0545675453&text=TEST"

在他们的文档中,我需要使用以下参数: -i --user AUTH_ID:AUTH_TOKEN

我不知道如何实现,但它不起作用(401 错误 - 未经授权)
我尝试在我的代码中使用它而不是 auth 参数,如下所示: auth == “MA****************MM2:Yj****************************** M5ZjA4"

需要一些建议吗????

谢谢

这是我的代码:

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);





}

【问题讨论】:

  • 最好的方法是在没有应用程序的情况下发送消息,然后使用像wireshark或fiddler这样的嗅探器跟踪消息。你会学到很多东西。然后修改您的代码以发送与没有您的应用程序相同的代码。

标签: c# curl httpwebrequest plivo


【解决方案1】:

需要将 User:Pass 作为网络凭据而不是身份验证发送。并使用 'application/json' 作为内容类型。

[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);

} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多