这个PHP Web服务调用的.NET等价物是什么?

I am attempting to utilise an API, and the providers can only offer a PHP sample, which I have summarised as follows (with sensitive data removed):

 <?php       
    ini_set('default_socket_timeout', 1600);
    $options = array( 
        'login' => 'myusername', 
        'password' => 'mypassword',
        'trace' => 1
    ); 
    $url = 'https://supplierurl/ws?wsdl'; 
    $soapClient = new \SoapClient($url, $options);

    $params =  array('12345');

    try{
        $details = $soapClient->getData($params);
        var_dump($details->paramdetails);
    }
    catch(\Exception $e){
        echo "Last request headers:<br>
".$soapClient->__getLastRequestHeaders()."<br><br>
";
        echo "Last request:<br>
".$soapClient->__getLastRequest()."<br><br>
";
        echo "Last response headers:<br>
".$soapClient->__getLastResponseHeaders()."<br><br>
";
        echo "Last response:<br>
".$soapClient->__getLastResponse()."<br><br>
";
    }
?>

I have successfully run this on my development machine and get back the data as expected.

I have attempted to use this service in .NET by adding a service reference using the url provided, which generates the proxy code as expected, giving me a configuration as below:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
            <binding name="mybinding">
              <security mode="Transport">
                <transport clientCredentialType="Basic"/>                  
              </security>

            </binding>
            <binding name="mybinding1" />
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="https://supplierurl/ws"
            binding="basicHttpBinding" bindingConfiguration="mybinding"
            contract="API.portType" name="API.port" />
    </client>
</system.serviceModel>

And test code as below:

API.portClient client = new API.portClient();           
client.ClientCredentials.UserName.UserName = "myusername";
client.ClientCredentials.UserName.Password = "mypassword";
API.GetDataResponse response = client.getData(new string[] { "12345" });

The code executes with no exceptions thrown, but response is null. If I change the username or password to something invalid, I get an exception, indicating that the credentials side of things is working.

If anyone can point me in the right direction, it would be much appreciated!

Some further information, if I add this as a web reference it works, which gets me moving for now, although I'd still like to know how to make it work in the first instance. Code for using a web reference:

WebReference.customerV4Service svc = new WebReference.customerV4Service();
svc.Credentials = new System.Net.NetworkCredential("myusername", "mypassword");
WebReference.GetDataResponse resp = svc.getData(new string[] { "12345" });