服务器返回 HTTP 响应代码:403 for URL Google maps api URL

Posted

技术标签:

【中文标题】服务器返回 HTTP 响应代码:403 for URL Google maps api URL【英文标题】:Server returned HTTP response code: 403 for URL Google maps api URL 【发布时间】:2022-01-21 07:25:20 【问题描述】:

我正在开发一个程序,该程序应该通过给定坐标使用谷歌地图 api url 显示带有 java swing 的地图,我的问题是当我运行代码时出现此异常:

java.io.IOException: Server returned HTTP response code: 403 for URL

这是我的代码

public class GoogleMapsDem 
    public static void main(String[] args) throws IOException 

        JFrame test = new JFrame("Google Maps");

        try 
            String latitude = "40.714728";
            String longitude = "-73.998672";

            String imageUrl = "https://maps.googleapis.com/maps/api/staticmap?center=" +
                    latitude +
                    "," +
                    longitude +
                    "&zoom=11&size=612x612&scale=2&maptype=roadmap&key=AIzaSyB_53TgJE4QKQJKOvJFKeLbvUrqKeJ3vw0";
            String destinationFile = "image.jpg";

            // read the map image from Google
            // then save it to a local file: image.jpg
            //
            URL url = new URL(imageUrl);
            InputStream is = url.openStream();
            OutputStream os = new FileOutputStream(destinationFile);

            byte[] b = new byte[2048];
            int length;

            while ((length = is.read(b)) != -1) 
                os.write(b, 0, length);
            

            is.close();
            os.close();
         catch (IOException e) 
            e.printStackTrace();
            System.exit(1);
        

        // create a GUI component that loads the image: image.jpg
        //
        ImageIcon imageIcon = new ImageIcon((new ImageIcon("image.jpg"))
                .getImage().getScaledInstance(630, 600,
                        java.awt.Image.SCALE_SMOOTH));
        test.add(new JLabel(imageIcon));

        // show the GUI window
        test.setVisible(true);
        test.pack();
    

这可能是什么原因造成的?

【问题讨论】:

确保除了“Google Maps API”之外,还启用了“Static Maps API”服务。 ***.com/questions/19408066/… 您似乎已经包含了您的 google maps API 密钥 - 您可能需要重置它,因为它现在是公开的,不法分子可能会窃取它。 【参考方案1】:

状态码403 Forbidden代表客户端错误,表示服务器有能力处理请求但拒绝授权访问。简单来说就是你没有权限访问这个url

【讨论】:

以上是关于服务器返回 HTTP 响应代码:403 for URL Google maps api URL的主要内容,如果未能解决你的问题,请参考以下文章

java.io.IOException:服务器返回 HTTP 响应代码:URL 的 403 [重复]

java.io.IOException:服务器返回 HTTP 响应代码:URL 为 403

java.io.IOException:服务器返回 HTTP 响应代码:URL 的 403 [重复]

Gradle 错误:服务器返回 HTTP 响应代码:403 用于 URL:http://services.gradle.org/distributions/gradle-2.2.1-all.zip

CORS 问题:预检响应具有无效的 HTTP 状态代码 403

HTTP响应码403 Forbidden和401 Unauthorized对比