PHP / VB.NET POST запрос

#php #vb.net

#php #vb.net

Вопрос:

Я пытаюсь подключиться к API, предоставляемому нашим поставщиком телекоммуникационных услуг, все, что они мне предоставили, — это веб-страница PHP, которую я хочу разместить.

Я, в свою очередь, попытался преобразовать это в VB .NET, что имеет для меня гораздо больше смысла, и было бы проще вставлять собираемые данные в SQL и т.д.

Я изо всех сил пытаюсь заставить API отвечать даже на базовую «аутентификацию», которая у него есть.

 <?php
// IPscape API auth details
define(IPS_API_KEY, "KEY");
define(IPS_API_USERPWD, "USER:PASSWORD");

// API URLs
define(IPS_AUTH_SERVICE, "URL");
define(IPS_CAMPAIGN_SERVICE, "URL");

define(VERBOSE, true);
define(DEBUG, false);

// IPscape API auth
if (VERBOSE || DEBUG) { echo "IPscape API auth startingn"; }
$ips_auth_response = ips_api_auth();
if (VERBOSE || DEBUG) { echo "IPscape API auth completen"; if (DEBUG) { echo print_r($ips_auth_response."n",true); }}
  

Теперь мой PHP чрезвычайно схематичен, но я почти уверен, что auth вызывает следующую функцию:

 function ips_api_auth() {

    $api_key = "apikey=".IPS_API_KEY;

    $ips_auth = curl_init(IPS_AUTH_SERVICE);
    curl_setopt($ips_auth, CURLOPT_POST, 1);
    curl_setopt($ips_auth, CURLOPT_POSTFIELDS, $api_key);
    curl_setopt($ips_auth, CURLOPT_USERPWD, IPS_API_USERPWD);
    curl_setopt($ips_auth, CURLOPT_RETURNTRANSFER, true);

    $ips_auth_response = curl_exec($ips_auth);

    curl_close($ips_auth);
    return $ips_auth_response;
}
?>
  

По сути, я ввел это следующим образом:

 Public IPS_API_KEY As String = "KEY"
    Public IPS_API_USERPWD As String = "USER:PASSWORD"

    Public IPS_AUTH_SERVICE As String = "URL"
    Public IPS_CAMPAIGN_SERVICE As String = "URL"
    Sub Main()

        Dim authresponse As String

        authresponse = ips_api_auth()

    End Sub

    Public Function ips_api_auth As String

        ServicePointManager.Expect100Continue = true
        System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12

        Dim myReq as HttpWebRequest
        Dim myResp as HttpWebResponse

        myReq = HttpWebRequest.Create(IPS_AUTH_SERVICE)

        myreq.Method = "POST"
        myReq.contenttype = "application/json"
        myReq.Headers.Add("Authorization","Basic " amp; Convert.ToBase64String(Encoding.UTF8.GetBytes(IPS_API_USERPWD)))


        Dim myData As String = "apikey=" amp; IPS_API_KEY
        myReq.GetRequestStream.Write(System.Text.Encoding.UTF8.GetBytes(myData), 0, System.Text.Encoding.UTF8.GetBytes(myData).Count)
        myResp = myReq.GetResponse
        Dim myreader As New System.IO.StreamReader(myResp.GetResponseStream)
        Dim myText As String
        myText = myreader.ReadToEnd

    End Function
  

Каким бы ни был способ, которым я пытаюсь это сделать, я получаю

 System.Net.WebException: 'The remote server returned an error: (400) Bad Request.'
  

Теперь я почти уверен, что я рассмотрел все, и я смотрел на это достаточно долго, чтобы я мог использовать другую пару глаз.

Любые мысли от людей, немного более сведущих в PHP, чем я.

Ваше здоровье