老师, 扫描后出现scope不能为空

来源:16-1 教程总结

qq_神秘小屋_0

2018-04-05

写回答

6回答

翔仔

2018-04-05

同学好,我测试了一下,确实有同样的问题,百度的短网址估计目前又维护了,因为我直接登录http://dwz.cn/发现也转化不了,而目前我用

package com.imooc.o2o.util;

import java.io.IOException;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class ShortNetAddressUtil {
	public static String getShortURL(String longUrl) {
		try {
			String result = callHttp("http://suo.im/api.php?format=json&url=" + longUrl);
			JSONObject jsonResult = JSON.parseObject(result);
			return jsonResult.getString("url");	
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	private static String callHttp(String requestUrl) throws IOException {
		OkHttpClient httpClient = new OkHttpClient(); // 创建OkHttpClient对象
		Request request = new Request.Builder().url(requestUrl)// 请求接口。如果需要传参拼接到接口后面。
				.build();// 创建Request 对象
		Response response = null;
		response = httpClient.newCall(request).execute();// 得到Response 对象
		return response.body().string();
	}

	/**
	 * 百度短链接接口
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(getShortURL("https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login"));
	}
}

转换是没有问题的,不好定位同学的这个问题是啥,这几天在外出差,同学可以试试上面就是之前给过的解决方案,调试一下,如果还有问题,先调研一下网上还有什么好用的短网址解决方案,如果找到可以分享出来:)等翔仔这几天外出回来或者百度服务恢复了再解决也可以:)

0
1
qq_神秘小屋_0
非常感谢!
2018-04-06
共1条回复

qq_神秘小屋_0

提问者

2018-04-06

老师,我用新浪短链接成功了,现在可以进去微信,但是出现了错误代码40163 code  been  used  ,我先用店家登录后台商店管理界面,再用用户登录前台管理界面,程序中根据code 回调AccessToken 问题出在那里

这是新浪短链接

package com.imooc.o2o.util;

 

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.URL;

import java.net.URLConnection;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

 

public class ShortNetAddressUtil{

 

    static String actionUrl = "http://api.t.sina.com.cn/short_url/shorten.json";

    static String APPKEY = "2815391962,31641035,3271760578,3925598208";

    public static void main(String[] args) {

        String longUrl = "https://www.baidu.com";

        System.out.println(getShortURL(longUrl));

    }

 

    public static String getShortURL(String longUrl){

        longUrl = java.net.URLEncoder.encode(longUrl);

        String appkey = APPKEY;

        String[] sourceArray = appkey.split(",");

        for(String key:sourceArray){

            String shortUrl = sinaShortUrl(key,longUrl);

            if(shortUrl != null){

                return shortUrl;

            }

        }

        return null;

    }

     

    public static String sinaShortUrl(String source, String longUrl){

        String result = sendPost(actionUrl, "url_long="+longUrl+"&source="+source);

        if(result==null || "".equals(result)){

            return "";

        }

        JSONArray jsonArr = JSON.parseArray(result);

        JSONObject json = JSON.parseObject(jsonArr.get(0).toString());

        String ret = json.get("url_short").toString();

        return ret;

    }  

     

    /**

     * 向指定 URL 发送POST方法的请求

     * @param url 发送请求的 URL

     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

     * @return 所代表远程资源的响应结果

     */

    public static String sendPost(String url, String param) {

        PrintWriter out = null;

        BufferedReader in = null;

        String result = "";

        try {

            URL realUrl = new URL(url);

            // 打开和URL之间的连接

            URLConnection conn = realUrl.openConnection();

            // 设置通用的请求属性

            conn.setRequestProperty("accept", "*/*");

            conn.setRequestProperty("connection", "Keep-Alive");

            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

            // 发送POST请求必须设置如下两行

            conn.setDoOutput(true);

            conn.setDoInput(true);

            // 获取URLConnection对象对应的输出流

            out = new PrintWriter(conn.getOutputStream());

            // 发送请求参数

            out.print(param);

            // flush输出流的缓冲

            out.flush();

            // 定义BufferedReader输入流来读取URL的响应

            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            String line;

            while ((line = in.readLine()) != null) {

                result += line;

            }

        } catch (Exception e) {

            System.out.println("发送 POST 请求出现异常!"+e);

            e.printStackTrace();

        }

        //使用finally块来关闭输出流、输入流

        finally{

            try{

                if(out!=null){

                    out.close();

                }

                if(in!=null){

                    in.close();

                }

            }

            catch(IOException ex){

                ex.printStackTrace();

            }

        }

        return result;

    }   

     

}


1
1
慕尼黑5582837
同学你真的太太太给力了!!!谢谢你~现在微信扫码调通了~
2018-05-11
共1条回复

翔仔

2018-04-06

大赞同学解决问题的能力,如果申请了域名就不会弹警告窗口了,同学也可以找认识的有域名的朋友给你解析一个二级域名。此外,新浪那个方案大赞,非常感谢同学的分享,日后必成大器!

0
0

qq_神秘小屋_0

提问者

2018-04-06

  问题解决了  扫描二维码后跳出警告不要点继续访问 点下面的访问原网页  就能避免再次获取code

0
0

qq_神秘小屋_0

提问者

2018-04-05

//img.mukewang.com/szimg/5ac629510001b3c210100177.jpg

老师 使用百度短地址会出现 response string :{"status":-1;"err_msg":"","longurl":""}

就会出错

0
0

翔仔

2018-04-05

同学好,请用回百度短地址 那个稳定一些 suo听说又不太稳定了

0
0

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程