Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: dvillarejohonra en 22 de Abril 2015, 13:00

Título: Implementar WebRequest y WebResponse HttpWebRequest de C# en PHP con curl
Publicado por: dvillarejohonra en 22 de Abril 2015, 13:00
Hola muy buenas, me han pasado un código para realizarlo en PHP, el código que me han pasado está en C#.

WebRequest request = WebRequest.Create(string.Format(url, ip, puerto, prefijoSeri));
WebResponse ws = request.GetResponse();

Ese código lo tengo que pasar a PHP y no se cómo, se lo que hace el request y el response pero no se traspasarlo a PHP.

Espero que alguien pueda pasarmelo a PHP o explicarme como hacerlo.

Muchas Gracias por vuestra atención.

Un saludo.  ;)

Diego.
Título: Re:Problema con WebRequest y WebResponse
Publicado por: Mastermind en 22 de Abril 2015, 15:10
Hola a ver si pudieras explicar lo que hay que hacer, a lo mejor se puede hacer de distintas maneras y con php hay que hacerlo de una forma distinta, pero sabiendo lo que hay que hacer a lo mejor podemos sacarlo  ::)
Título: Re:Problema con WebRequest y WebResponse
Publicado por: dvillarejohonra en 22 de Abril 2015, 15:25
En C#:

Código: [Seleccionar]
try
{
string ip = (el que nos digan)
string puerto = (el que nos digan)
string url = (la que nos digan)

JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
string prefijoSeri = jsSerializer.Serialize(prefijo);
WebRequest request = WebRequest.Create(string.Format(url, ip, puerto, prefijoSeri));
WebResponse ws = request.GetResponse();

}
catch (Exception ex)
{
throw ex;
}

Este es el código que a mi me han pasado. Entonces lo tengo que pasar a php, este codigo está hecho con C#.


Aquí comienza el código en PHP que yo he ido haciendo.

Código: [Seleccionar]
<?php try{//Inicializamos las variables$ip = (el que nos digan);$puerto = (el que nos digan);$url = (la que nos digan);		//Serializamos	$prefijo = (el que nos digan);$serialize_prefijo = serialize($prefijo);		}catch (Exception ex){	throw ex;}?>


Este el código que yo llevo hecho por ahora, solo me falta pasar lo del WebRequest que no se como se hace eso en PHP.
         
Título: Re:Problema con WebRequest y WebResponse
Publicado por: Mastermind en 22 de Abril 2015, 17:05
Hola para pegar código en el foro mira esta explicación https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

He encontrado este ejemplo de equivalencia:

Código con C# HttpWebRequest

Código: [Seleccionar]
Dictionary post_values = new Dictionary();
post_values.Add("M_ID", "TestUsrID");
post_values.Add("M_KEY", "TestKey");
post_values.Add("T_REFERENCE", "TestRef");


String post_string = "";


foreach (KeyValuePair post_value in post_values)
{

   post_string += post_value.Key + "=" + HttpUtility.UrlEncode(post_value.Value) + "&";
}
post_string = post_string.TrimEnd('&');
string VOID_URL = "https://www.sagepayments.net/web_services/vterm_extensions/transaction_processing.asmx/BANKCARD_VOID";
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(VOID_URL);
objRequest.Method = "POST";

objRequest.ContentLength = post_string.Length;
objRequest.ContentType = "application/x-www-form-urlencoded";



// post data is sent as a stream
StreamWriter myWriter = null;
myWriter = new StreamWriter(objRequest.GetRequestStream());

myWriter.Write(post_string);
myWriter.Close();


// returned values are returned as a stream, then read into a string

HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();

using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
{
 
  post_response = responseStream.ReadToEnd();
   
responseStream.Close();

}


Console.WriteLine("Response"+post_response);


Código con PHP

Código: [Seleccionar]
$param = array("M_ID" => "TestUsrID", "M_KEY" => "TestKey", "T_REFERENCE" => "TestRef");


$url = "https://www.sagepayments.net/web_services/vterm_extensions/transaction_processing.asmx/BANKCARD_VOID";


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);


$response = curl_exec($ch);

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);


if (curl_errno($ch)) {

   echo "Error : ".curl_error($ch));
}

curl_close($ch);


echo "Response : ".$response;

Datos del ejemplo:

Código: [Seleccionar]
POST /web_services/vterm_extensions/transaction_processing.asmx/BANKCARD_VOID HTTP/1.1
Host: www.sagepayments.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

M_ID=string&M_KEY=string&T_REFERENCE=string
Título: Re:Problema con WebRequest y WebResponse
Publicado por: dvillarejohonra en 22 de Abril 2015, 17:23
ok, voy a probarlo.

Muchas gracias.

Un saludo.