Categorias
dicas host iis site web

Testando um Web-Site na pr??pria m??quina como se fosse externamente

Tentei elaborar um t??tulo de forma que ficasse entend??vel o que eu queria dizer. N??o sei se ajuda, mas significa que:

“Testaremos o acesso a um web-site que est?? publicado no IIS mas que no navegador n??o iremos usar localhost para busc??-lo e sim o pr??prio endere??o.”

Ficou bom agora? Ent??o vamos l??. No IIS crie um web-site. O processo ?? bem simples:

Pronto! J?? temos nosso site, mas se formos testar: http://thiagomarcal.com.br/ n??o encontra!

Por que isso? Quando queremos procurar um site, o sistema operacional analisa o hostname para saber onde encontrar esse endere??o: se for interno e mapeado usa-se a rede interna, sen??o procura a rede externa dentre outros. Como n??o existe o mapeamento e tampouco o dom??nio externo, n??o acha nada. Ent??o vamos alterar o arquivo de host.

Siga para o caminho: C:WindowsSystem32driversetc e abra o arquivo hosts, em modo texto, para adicionarmos algumas entradas.

# copyright (c) 1993-2009 microsoft corp.

#
# this is a sample hosts file used by microsoft tcp/ip for windows.
#
# this file contains the mappings of ip addresses to host names. each
# entry should be kept on an individual line. the ip address should
# be placed in the first column followed by the corresponding host name.
# the ip address and the host name should be separated by at least one
# space.
#
# additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# for example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within dns itself.
# 127.0.0.1 localhost
# ::1 localhost

127.0.0.1 thiagomarcal.com.br

Coloque, na ??ltima linha, o IP, tabula????o e nome do dom??nio nessa ordem para o site desejado. Salve e teste novamente o acesso. E pronto!

Mais f??cil do que isso: imposs??vel!

Categorias
dicas php visual studio web-service wsdl

Consumindo Web-Service PHP atrav??s do ASP.NET (C#)

J?? passou por aqui um post sobre de como consumir um web-service, mas era em ASP.NET. Agora como consumir um web-service em PHP? Da mesma forma. N??o muda! O fato de escrever esse post ?? apenas e pelo simples fato de ter um certo inconveniente na elabora????o do web-service em PHP.
Se procurar na net, recomendo o artigo de Maur??cio Reckziegel da iMasters que ?? muito bom e explica certinho como fazer. Se voc?? seguir ?? risca o que est?? escrito ir?? conseguir elaborar um web-service em PHP normalmente e ir?? conseguir consumir, menos em ASP.NET. N??o ?? que a mat??ria esteja errada, ?? porque o ASP.NET ?? chato com a valida????o do WSDL que ?? gerado pelo PHP. O documento (WSDL) tem que ser gerado na m??o e, quando n??o ?? gerado de forma autom??tica, estamos suscept??veis ao erro. Com o web-service em PHP ?? assim…
Ent??o, digamos que voc?? tenha elaborado o web-service em PHP e j?? fez refer??ncia na sua aplica????o. Contudo sua aplica????o pode dar erro ou retornar nada. Primeiramente, todo WSDL que iremos usar deve ser validado antes de ser devidamente consumido. O Visual Studio disp??e de uma ferramenta que valida e gera a classe consumidora (que n??o precisar ser usada pois est?? intr??nseco na ferramenta). V?? em Iniciar > Todos os Programas > Microsoft Visual StudioVisual Studio ToolsVisual Studio 2008 Command Prompt. Ir?? abrir um prompt de comando. Escreva por exemplo: wsdl http://thiagomarcal.blogspot.com/webservice.php?wsdl . Se der tudo certo, ir?? surgir um resultado semelhante a esse:

Se estiver tudo OK, ent??o pode usar tranquilamente, caso contr??rio ir?? surgir o seguinte problema:

Microsoft (R) Web Services Description Language Utility

[Microsoft (R) .NET Framework, Version 2.0.50727.3038]
Copyright (C) Microsoft Corporation. All rights reserved.

Warning: This web reference does not conform to WS-I Basic Profile v1.1.

Ou seja, o WSDL gerado pelo PHP n??o est?? conforme o padr??o. Dando uma alterada aqui e ali, podemos usar o seguinte c??digo para gerarmos o web-service em PHP dentro dos conformes:

<?php
// Requerimento aos componentes
require_once(‘nusoap/nusoap.php’);
include(“class.phpmailer.php”);
include(“class.smtp.php”);


// Cria????o da inst??ncia
$server = new soap_server();


// Registro do m??todo
$server->register(‘EnviaMail’);


// WSDL
$server->configureWSDL(‘server.EnviaMail’,’urn:server.EnviaMail’);
$server->wsdl->schemaTargetNamespace = ‘urn:server.EnviaMail’;
// registra o m??todo a ser oferecido
$server->register(‘EnviaMail’, //nome do m??todo
array(‘email’ => ‘xsd:string’), //par??metros de entrada
array(‘return’ => ‘xsd:string’), //par??metros de sa??da
‘urn:server.EnviaMail’, //namespace
‘urn:server.EnviaMail#EnviaMail’, //soapaction
‘rpc’, //style
‘literal’, //use
‘Retorna se o e-mail foi enviado’ //documenta????o do servi??o
);


// Defini????o do m??todo a ser utilizado
function EnviaMail($email) {
return “E-email enviado com sucesso!”;
}


// Requisi????o para uso do servi??o
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ;
$server->service($HTTP_RAW_POST_DATA);
?>

Perceberam a diferen??a? Praticamente nenhuma, mas h??: o estilo do documento. N??o irei entrar em detalhes, mas dois tipos de documentos mais usados: encoded e literal (veja mais nesse artigo). Use literal! Com isso seu web-service ser?? consumido certinho…
Se estiver com o erro: O cliente encontrou o tipo conte??do de resposta de ‘ text/html; charset = utf-8 ‘, mas era esperado ‘text/xml’ ou The client find the answer ‘text/html’, but was expected ‘text/xml’. verifique se seu web-service est?? imprimindo conte??do HTML (echo) e comprometendo o retorno dos dados. Tranquilo, n???