Autor Tema: Implementar WebRequest y WebResponse HttpWebRequest de C# en PHP con curl  (Leído 7079 veces)

dvillarejohonra

  • Sin experiencia
  • *
  • Mensajes: 3
    • Ver Perfil
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.
« Última modificación: 23 de Abril 2015, 08:45 por César Krall »

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:Problema con WebRequest y WebResponse
« Respuesta #1 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  ::)

dvillarejohonra

  • Sin experiencia
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Problema con WebRequest y WebResponse
« Respuesta #2 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.
         
« Última modificación: 23 de Abril 2015, 08:46 por César Krall »

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:Problema con WebRequest y WebResponse
« Respuesta #3 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

dvillarejohonra

  • Sin experiencia
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Problema con WebRequest y WebResponse
« Respuesta #4 en: 22 de Abril 2015, 17:23 »
ok, voy a probarlo.

Muchas gracias.

Un saludo.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".