2014-02-02 4 views
8

Я не знаю, что конкретно проблема, но я получаю ошибку, например: Даже я также проверяю все пути, и это правильно, но все же оно получит ошибку.Как решить эту ошибку в Android? java.net.MalformedURLException: Протокол не найден:

java.net.MalformedURLException: Протокол не найден: www.w3schools.com/webservices/tempconvert.asmx

Мой код:

package com.example.mytest; 

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapPrimitive; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.AndroidHttpTransport; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.widget.TextView; 

@SuppressWarnings("deprecation") 
public class MainActivity extends Activity { 

    private final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit"; 
    private final String METHOD_NAME = "CelsiusToFahrenheit"; 
    public final String NAMESPACE = "http://tempuri.org"; 
    public String URL = "www.w3schools.com/webservices/tempconvert.asmx"; 

    TextView tv; 

    public static String TAG = "MyTest"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Log.d(TAG, "MainActivity Started"); 
     tv = (TextView) findViewById(R.id.txt1); 

     SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); 
     Request.addProperty("Celsius", "32"); 

     // URL=URL.replaceAll(" ", "%20"); 

     SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     soapEnvelope.dotNet = true; 
     soapEnvelope.setOutputSoapObject(Request); 

     Log.d(TAG, "URL:"+URL); 

     AndroidHttpTransport aht = new AndroidHttpTransport(URL); 

     try { 
      // HttpTransportSE aht = new HttpTransportSE(URL); 

      Log.d(TAG, "aht:" + aht); 

      aht.call(SOAP_ACTION, soapEnvelope); 
      SoapPrimitive resultString = (SoapPrimitive) soapEnvelope 
        .getResponse(); 

      // Object resultString = (Object)soapEnvelope.getResponse(); 

      Log.d(TAG, "result String=" + resultString); 

      tv.setText("Status: " + resultString); 
     } catch (Exception e) { 
      Log.d(TAG, "Error: ", e); 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Я не знаю, что точно проблема, но я получаю ошибка, как:

02-01 21:07:01.264: D/MyTest(1068): MainActivity Started 
02-01 21:07:01.534: D/MyTest(1068): Error: 
02-01 21:07:01.534: D/MyTest(1068): java.net.MalformedURLException: Protocol not found: www.w3schools.com/webservices/tempconvert.asmx 
02-01 21:07:01.534: D/MyTest(1068):  at java.net.URL.<init>(URL.java:275) 
02-01 21:07:01.534: D/MyTest(1068):  at java.net.URL.<init>(URL.java:159) 
02-01 21:07:01.534: D/MyTest(1068):  at org.ksoap2.transport.ServiceConnectionSE.<init>(ServiceConnectionSE.java:65) 
02-01 21:07:01.534: D/MyTest(1068):  at org.ksoap2.transport.ServiceConnectionSE.<init>(ServiceConnectionSE.java:61) 
02-01 21:07:01.534: D/MyTest(1068):  at org.ksoap2.transport.AndroidServiceConnection.<init>(AndroidServiceConnection.java:27) 
02-01 21:07:01.534: D/MyTest(1068):  at org.ksoap2.transport.AndroidHttpTransport.getServiceConnection(AndroidHttpTransport.java:35) 
02-01 21:07:01.534: D/MyTest(1068):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:124) 
02-01 21:07:01.534: D/MyTest(1068):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95) 

ответ

29

Добавить http:// перед www... или https://.

public String URL = "http://www.w3schools.com/webservices/tempconvert.asmx"; 
+0

Я закончил с новой коррекцией, но теперь появилась новая ошибка, java.io.IOException: Hostname не был проверен –

+0

@GaneshKatikar - задайте новый вопрос ... после проверки того, что он еще не был задан и не ответил. –

+0

Я исправляю эти изменения, но теперь появляется новая ошибка: SoapFault - faultcode: «soap: Client» faultstring: «Сервер не распознал значение HTTP-заголовка SOAPAction: tempuri.org/CelsiusToFahrenheit. '; faultactor: 'null' detail: Является ли какое-либо решение сейчас –

2

вы пропустили протокол http://

public String URL = "http://www.w3schools.com/webservices/tempconvert.asmx"; 

Примечание:
Если вам просто нужно перевести градусы Цельсия в Fahrenhiet OT наоборот, вы можете попробовать это:

function C2F (C) { 
var F = eval ((C x 9/5) +32) 
return (F); } 

function F2C (F) { 
var C = eval (F - 32) * 5/9; 
return (C); } 
+0

Я исправляю эти изменения, но теперь появляется новая ошибка: SoapFault - faultcode: 'soap: Client 'faultstring:' Сервер не распознал значение HTTP-заголовка SOAPAction: http://tempuri.org/CelsiusToFahrenheit. ' faultactor: 'null' detail: –

+0

является 'tempuri.org' хостом, который вы используете, или просто примером? –

+1

На самом деле я вообще не хочу формулы. Я просто хочу назвать этот веб-сервис, чтобы показать результат –

Смежные вопросы