【问题标题】:How do I resolve an Error PHP webservice PHP + Android?如何解决错误 PHP webservice PHP + Android?
【发布时间】:2016-12-19 12:34:35
【问题描述】:

我在 php 中有一个网络服务:

<?php// incluyendo la librería de nusopa
require_once('./nusoap-0.9.5/lib/nusoap.php');

// Configurando el web service
$server = new soap_server();
$server->configureWSDL("SaludoXML", "urn:SaludoXMLwsdl");
$server->wsdl->schemaTargetNamespace = "urn:SaludoXMLwsdl";

// Registrando nuestra función Saludar con su parámetro nombre
$server->register(
        'Saludar', // Nombre del método
        array('nombre' => 'xsd:string'), // Parámetros de entrada
        array('return' => 'xsd:string'), // Parámetros de salida
        'urn:SaludoXMLwsdl', // Nombre del workspace
        'urn:SaludoXMLwsdl#Saludar', // Acción soap
        'rpc', // Estilo
        'encoded', // Uso
        'Saluda a la persona' // Documentación
);
$HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';   
$server->service($HTTP_RAW_POST_DATA);

我有一个关于 android ClientWS 的课程:

package br.com.brunnosena.portalaluno;

import java.io.IOException;
import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.w3c.dom.Element;
import org.xmlpull.v1.XmlPullParserException;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;

public class ExemploWS extends AsyncTask<String, Integer, String> {
private Context context;

private static final String SOAP_ACTION = "SaludoXMLwsdl#Saludar";
private static final String OPERATION_NAME = "Saludar";
private static final String WSDL_TARGET_NAMESPACE = "SaludoXMLwsdl";
private static final String SOAP_ADDRESS = "http://10.1.14.19/webservice/loginApp/webservice.php";

public ExemploWS(Context context) {
    this.context = context;
}

@Override
protected String doInBackground(String... params) {

    String result = null;
    SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
            OPERATION_NAME);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER10);

    // Con esta opción indicamos que el web service no es .net
    envelope.dotNet = false;
    envelope.setOutputSoapObject(request);

    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

    // Enviando un parámetro al web service
    request.addProperty("nombre", params[0]);

    try {
        // Enviando la petición al web service
        httpTransport.call(SOAP_ACTION, envelope);

        // Recibiendo una respuesta del web service
        SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope
                .getResponse();

        result = resultsRequestSOAP.toString();

        //httpTransport.getServiceConnection().disconnect();
    } catch (IOException | XmlPullParserException e) {
        Log.v("Error", e.getMessage());
        result = e.getMessage();
    }

    return result;
}

@Override
protected void onPostExecute(String result) {
    // Mostramos la respuesta del web service
    Toast.makeText(context, result, Toast.LENGTH_LONG).show();
    }
}

如果我将 localhost 放在“SOAP_ADDRESS”中,它就可以工作。但是,如果我放置一个不同的 url 示例:http://brunnosena.com.br/webService/loginApp/webservice.php,在我看来会出现以下错误:

V/Error: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <html lang='pt-br'>@2:20 in java.io.InputStreamReader@4e7c1f54) 

【问题讨论】:

    标签: php android web-services


    【解决方案1】:

    1.您能否检查一下您在以下权限 android.permission.INTERNET 下授予的清单文件

    1. 尝试更改 SOAP_ADDRESS = http://brunnosena.com.br/webService/loginApp/webservice.php?wsdl

    我希望它会起作用

    【讨论】:

    • 谢谢。有效。但我把它放在我的域中进行测试。我需要转移到公司的域,不幸的是它犯了同样的错误。 [链接]vagas.qi.edu.br/webservice/loginApp/webservice.php [/链接]。你能帮帮我吗?
    • 嗨@Khushvinder。我试过了,但它犯了一个错误。我相信这是该服务器上的锁定端口。你知道你可以打开哪扇门吗?
    • 为此,您需要在主机面板上进行操作。在那个地方你可以启用和禁用端口..
    • 嗨@Khushvinder,但我不知道端口号。
    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 2011-07-27
    • 1970-01-01
    • 2017-02-05
    • 2018-06-05
    • 2012-04-29
    • 2016-07-29
    • 2019-03-12
    相关资源
    最近更新 更多