Question

Je développe une solution pour les données de transférer téléphone Android au serveur (écrit en C # /. NET).

J'ai créé un service WCF et les tests avec tout émulateur a bien fonctionné. Puis, quand j'ai essayé de vous connecter depuis un téléphone mobile (connecté à la maison réseau wifi) J'ai reçu le message d'exception suivant:

  

org.apache.http.conn.HttpHostConnectException: Connexion à http://192.168.1.5:8000 refusé

Je voudrais vraiment apprécier si anyonecould donner un coup d'oeil au fichier de configuration et l'interface et donner des conseils sur la façon de permettre la connexion.

web.config:

<configuration>
  <system.web>
    <compilation debug="true"/>
  </system.web>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="DefaultBinding"
                 allowCookies="true"
                 bypassProxyOnLocal="true" />
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="RESTFriendly">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="RESTServer.LoginService">
        <endpoint address=""
                  behaviorConfiguration="RESTFriendly"
                  binding="webHttpBinding"
                  bindingConfiguration="DefaultBinding"
                  contract="RESTServer.ILoginService" />
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  </system.serviceModel>
</configuration>

Interface:

[ServiceContract()]
public interface ILoginService
{
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/username={username}&password={password}")]
    [OperationContract]
    Message Login(string username, string password);
}

Mise en oeuvre du service:

public class LoginService : ILoginService
{
    public Message Login(string username, string password)
    {
        Message message = new Message();
        SQLWorks sqlWorks = new SQLWorks();
        string strSession = sqlWorks.Login(username, password);
        string strMessage;
        message.Session = strSession;
        if(strSession == "")
        {
            strMessage = "Login failed! Please check your username/password!";
        }
        else
        {
            strMessage = "Login Successful";
        }
        message.ErrorMessage = strMessage;
        return message;
    }
}
Était-ce utile?

La solution

Pour vous connecter à votre service, il doit être hébergé sur un serveur Web public. Il ressemble à l'adresse que vous utilisez 192.168.1.5:8000 est une adresse réseau à domicile, ce qui est pas accessible depuis le monde extérieur (un téléphone).

Autres conseils

si vous utilisez OS Vista, vous devez ajouter l'adresse dans votre pare-feu

netsh http add url = http: // +: 8000 / utilisateur = DOMAIN \ user

Utilisez votre ip LAN pour connecter votre émulateur avec le service Web ,, Ex: http://192.168.1.78: 8080 / webservice

Mais votre connexion locale doit être activé pour Goto: Panneau de configuration \ Réseau et Internet \ Connexions réseau

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top