java - Android:使用带有端口号的 Uri.Builder().build() 创建 URL

标签 java android apache

Uri.Builder.build() 可以很好地处理普通的 URL,但它无法支持端口号。

我发现让它支持端口号的最简单方法是让它先解析给定的 URL,然后再使用它。

        private void postData(String value_id,String  value_seaction,
        String value_item,
        String value_descration) {

        HttpParams httpParameters = new BasicHttpParams();
        HttpProtocolParams.setContentCharset(httpParameters, HTTP.UTF_8);
        HttpProtocolParams.setHttpElementCharset(httpParameters, HTTP.UTF_8);

           HttpClient httpclient = new DefaultHttpClient(httpParameters);
          // Log.d("url=>",value_item);
          // Log.d("url=>","http://rafsanjan.uni-azad.ebrahiminezhad.ir/json/darkhasr.php?shdaneshjo="+value_id+"&moavenat="+value_seaction+"&darkhast="+value_item+"&startdate=test&tozih="+ value_descration);
        //   http://app.sirmagid.ac.ir:1180/json2
           Uri.Builder builder = new Uri.Builder();
           builder.scheme("http")
               .authority("app.iaurafsanjan.ac.ir:1180")
               .appendPath("json2")
               .appendPath("darkhasr.php")
               .appendQueryParameter("shdaneshjo", value_id)
               .appendQueryParameter("moavenat", value_seaction)
                .appendQueryParameter("darkhast", value_item)
                 .appendQueryParameter("startdatet", "0")
                 .appendQueryParameter("tozih", value_descration);
              // .fragment("section-name");
           String myUrl = builder.build().toString();
           Log.d("url=>",myUrl);

          HttpPost httppost = new HttpPost(myUrl);
          // HttpPost httppost = new HttpPost
           ("http://sirmagid.uni-azad.ebrahiminezhad.ir   /json/darkhasr.php?shdaneshjo="+value_id+"&moavenat="+value_seaction+"&darkhast="+zir_item+"&startdate=test&tozih="+ value_descration);  //???
           try {
               ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(8);
               //nameValuePairs.add(new BasicNameValuePair("name", name));
               httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
               HttpResponse response = httpclient.execute(httppost);
               HttpEntity resEntity = response.getEntity();  
               Log.d("RESPONSE",EntityUtils.toString(resEntity));

           }
           catch(Exception e)
           {
               Log.e("log_tag", "Error:  "+e.toString());
           }
       }

返回:

http://app.sirmagid.ac.ir%3a1180/json2/darkhasr?shdaneshjo=920275234&moavenat=%D8%A7%D9%85%D9%88%D8%B2%D8%B4%DB %8C&darkhast=j&startdatet=0&tozih=66666

错误:

%3a1180/

最佳答案

设置端口号没有特别的方法。 为了实现你想要的,你应该使用 .encodedAuthority("app.iaurafsanjan.ac.ir:1180") 而不是 .authority("app.iaurafsanjan.ac.ir:1180")

关于java - Android:使用带有端口号的 Uri.Builder().build() 创建 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454571/

相关文章:

java - 读取 HTML 文件以在 JEditorPane 中查看

android - 如何检查设备是否已在 Flutter 中 Root

java - "Compilation failed; see the compiler error output for details."错误

android - 修改默认模拟器

apache - 从响应 header 中删除 "Server: Apache"

php - 用 PHP 编写的 SSI 解析器?

java - 拦截构造函数导致 ClassNotFoundException

java - 在递归对象上实现 equals 和 hashCode (JPA @ManyToMany)

apache - 在 apache web 服务器后面的 tomcat 中检查对 Apache web 服务器的请求是否为 https

java - Quick Spring MVC 问题 : If I don't return a model, 为什么我仍然可以通过响应呈现 View ?