Здравствуйте! я использую этот пример как базу для подключиться к API из приложения на C#, если я использую метод без параметров, то все работает отлично, но если я использую метод с параметрами, то у меня ошибка авторизации. Подскажи что не так.
public static string ByteToString(byte[] buff)
{
var sbinary = "";
for (var i = 0; i < buff.Length; i++)
{
sbinary += buff[i].ToString("X2");
}
return sbinary;
}
public static string MD5Hash(string instr)
{
byte[] hash;
using (var md5 = new MD5CryptoServiceProvider())
{
hash = md5.ComputeHash(Encoding.Default.GetBytes(instr));
}
return ByteToString(hash).ToLower();
}
public static string SHA1Hash(string instr)
{
var result = string.Empty;
var keyByte = Encoding.Default.GetBytes(Secret);
using (var hmacsha = new HMACSHA1(keyByte))
{
hmacsha.ComputeHash(Encoding.Default.GetBytes(instr));
result = ByteToString(hmacsha.Hash).ToLower();
}
return result;
}
public void MakeRequest(string query, string paramStr, string methodType)
{
WebResponse response;
var plainTextBytes = Encoding.Default.GetBytes(SHA1Hash(query + paramStr + MD5Hash(paramStr)));
var fullQueryStr = Convert.ToBase64String(plainTextBytes);
var req = (HttpWebRequest)WebRequest.Create(Address + query);
req.Method = methodType;
req.Headers.Add("Authorization: " + Key + ":" + fullQueryStr);
try
{
response = req.GetResponse();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
var stream2 = response.GetResponseStream();
var reader = new StreamReader(stream2);
var data = reader.ReadToEnd();
reader.Close();
stream2.Close();
}
public static void Main()
{
var queryStr = "number=38097*******&message=\"Test message\"&caller_id=7*****";
MakeRequest(SendSMS, queryStr, MethodType.POST.ToString());
MakeRequest(Sip, string.Empty, MethodType.GET.ToString());
MakeRequest(Balance, string.Empty, MethodType.GET.ToString());
}
где получить caller_id - этот параметр