Android不考虑URL中完整的GET参数

时间:2019-04-07 13:47:45

标签: java android get connection-string

  

什么是基本工作方案??

如果我尝试从URL进入web browser以下,它可以正常工作,并发送一条消息。

[{http://49.50.67.32/smsapi/httpapi.jsp?username=myusername&password=mypassword&from=myfrom&to=919970316209&text=येथे+क्लिक+करा+ https://www.google.co.in/&coding=2][1]

** P.N:请勿尝试,因为我已经更改了用户名和密码。

  

接下来是什么..

我想进行相同的GET请求调用,但来自我的android studio java项目。

  

我尝试了什么?

由于主线程不允许进行网络操作,因此我正在Runnable Thread中实现相同的功能。代码如下:

String coding = "2";
String number = "919970316209";
String Text = "येथे+क्लिक+करा+https://www.google.co.in/";
String dummyURL = "http://49.50.67.32/smsapi/httpapi.jsp?username=myusername&password=mypassword&from=myfrom&to="+number+"&text="+Text+"&coding="+coding; 

URL url = new URL(dummyURL);
connection = url.openConnection();
InputStream is = null;
is = connection.getInputStream();

Log.d("SendViaGate : ", "OPENING : "+ url +" \n");
// FROM HERE ONWARD I GET THE RESPONSE FROM THIS REQUEST 
  

是什么问题..?

Android并未将Unicode Text视为URL的一部分,因此它会断开URL,并打开与部分URL的连接。

LOG_CAT

04-07 18:34:41.253 7491-7584/com.versatilemarketers.apps.instafame D/SendViaGate :: Exception occurred in main thread.. 
04-07 18:34:41.254 7491-7584/com.versatilemarketers.apps.instafame W/System.err: java.io.FileNotFoundException: http://49.50.67.32/smsapi/httpapi.jsp?username=myusername&password=mypassword&from=myfrom&to=919970316209&text=येथे+क्लिक+करा+https://www.google.co.in/&coding=2
04-07 18:34:41.255 7491-7584/com.versatilemarketers.apps.instafame W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
        at com.versatilemarketers.apps.instafame.SendViaGate.run(SendViaGate.java:51)

在上面的日志猫中,Android正在考虑http://49.50.67.32/smsapi/httpapi.jsp?username=myusername&password=mypassword&from=myfrom&to=919970316209&text=  作为带下划线的URL,然后将येथे+क्लिक+करा+作为text,然后将https://www.google.co.in/&coding=2作为第二个URL。

1 个答案:

答案 0 :(得分:0)

问题已解决,这是因为发出请求之前未对URL进行编码,解决方法是:

URLEncoder.encode(Text, "UTF-8")

我从Java URL encoding of query string parameters那里获得了参考

以上线程的公认答案也解决了我的问题,非常感谢用户@BalusC