Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用http请求发送阿拉伯语单词GET android_Java_Android_Android Asynctask - Fatal编程技术网

Java 使用http请求发送阿拉伯语单词GET android

Java 使用http请求发送阿拉伯语单词GET android,java,android,android-asynctask,Java,Android,Android Asynctask,我想发送带有HTTP请求的阿拉伯文(unicode) 使用URLEncodedUtils.format(params,HTTP.UTF_8)时 当单词为阿拉伯语时,它给出paramString此值 %D8%A7%D9%84%D9%82%D8%A7%D9%87%D8%B1%D9%87 这是我的代码: DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(

我想发送带有HTTP请求的阿拉伯文(unicode)

使用
URLEncodedUtils.format(params,HTTP.UTF_8)时
当单词为阿拉伯语时,它给出
paramString
此值 %D8%A7%D9%84%D9%82%D8%A7%D9%87%D8%B1%D9%87

这是我的代码:

DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, HTTP.UTF_8);

Log.d("Parser" , paramString);
url += "?" + paramString;
Log.d("parser" , url);
HttpGet httpGet = new HttpGet(url);

HttpResponse httpResponse = httpClient.execute(httpGet);

HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
服务器代码

function getShippingAddress($email)
   {
            $customerAddress = Mage::getModel('customer/address');
            $customer = Mage::getModel('customer/customer');
            $customer->setWebsiteId(Mage::app()->getWebsite()->getId());
            $customer->loadByEmail($email);
            $defaultShippingId = $customer->getDefaultShipping();
            $customerAddress->load($defaultShippingId); 
            $response["success"] = 1;
            $response["data"][0] = $customerAddress->getData('city');
            $response["data"][1] = $customerAddress-  >getData('street');
            $response["data"][2] = $customerAddress->getData('telephone');


        header('Content-Type: application/json; charset=utf-8');
        return json_encode($response);
}

尝试使用POST发送参数。示例代码如下:

private String sendHttpPost(String url, String msg)
        throws Exception {

    HttpPost post = new HttpPost(url);

    StringEntity stringEntity = new StringEntity(msg, "UTF-8");
    post.setEntity(stringEntity);


    return execute(post);
}
或者试试这个:

String unicodeUrl = URLEncoder.encode(url += "?" + paramString, "UTF-8");
HttpPost post = new HttpPost(unicodeUrl);
更新:

如果您的params=“Some_String_In_阿拉伯语”,请尝试以下代码:

DefaultHttpClient httpClient = new DefaultHttpClient();
//String paramString = URLEncodedUtils.format(params, HTTP.UTF_8);

String unicodeUrl = URLEncoder.encode(url += "?" + params, "UTF-8");
Log.d("URL" , unicodeUrl);
HttpGet httpGet = new HttpGet(unicodeUrl);

HttpResponse httpResponse = httpClient.execute(httpGet);

HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

并在服务器端使用urldecode方法(PHP)以阿拉伯语形式获取字符串。

我的问题在于,当我记录此字符串时,将值设置为“paramString”,它会给出此值%D8%A7%D9%84%D9%82%D8%A7%D9%87%D8%B1%D9%87,即使在我记录“params”时,它也会给出正确的值。您正在将数据编码为有效的url。您只需将unicode值添加到paramString,然后使用我给出的第二个代码。或者只需附加值(实际上%D8%A7是一个阿拉伯字符)并执行GET。要在服务器端检索值,请使用urldecode函数i将unicode值添加到paramString,并且仍然将相同的起始值添加到URL。您是否正确获取了服务器中的数据?您检查过了吗?您无法将unicode数据发送到服务器。你必须对它进行编码!这是表示单词
的url编码数据,就像将空格编码到
%20
中一样,问题是什么?是的,我想以url的形式发送,而不是以编码数据的形式发送。也许你想检查一下,谢谢,但在解码数据时仍然存在问题。你不必担心发送方的数据,服务器端会发生什么?使用服务器端代码读取此参数时,解码此参数的输出是什么?