尝试在 Expo 中连接到生产后端 URL 时出现网络错误(React Native)

Network Error when Trying to Connect to Production Backend URL in Expo (React Native)

提问人:Sushanth 提问时间:7/20/2023 更新时间:7/20/2023 访问量:34

问:

我正在使用 React Native 开发一个基本的 Expo 项目,并且我正在尝试连接到生产后端 URL。后端托管在生产服务器上,我想使用 XMLHttpRequest 执行 POST 请求。 但是我在下面遇到这个错误 错误 错误:网络请求失败

import React, { useEffect } from 'react';
import { View, Text } from 'react-native';

const Prod = () => {
  const apiUrl = 'base_url';
  const headers = {
    LanguageCode: 'en-US',
    subDomain: 'vamscom',
    'Content-Type': 'application/json',
  };

  const body = {
    productKey: 'productKey',
    uniqueKey: 'uniqueKey',
  };

  useEffect(() => {
    const fetchData = () => {
      const xhr = new XMLHttpRequest();
      xhr.open("POST", apiUrl, true);

      // Set headers
      for (const [key, value] of Object.entries(headers)) {
        xhr.setRequestHeader(key, value);
      }

      xhr.onreadystatechange = () => {
        if (xhr.readyState === XMLHttpRequest.DONE) {
          if (xhr.status === 200) {
            try {
              const data = JSON.parse(xhr.responseText);
              console.log("Response data:", data);
              // Do something with the data here, as needed
            } catch (error) {
              console.error("Error parsing JSON:", error);
              // Handle the error here, if needed
            }
          } else {
            console.error("Network response was not ok");
            // Handle the error here, if needed
          }
        }
      };

      xhr.onerror = (error) => {
        console.error("Error:", error);
        // Handle the error here, if needed
      };

      xhr.send(JSON.stringify(body));
    };

    // Call the function to make the API request
    fetchData();

  }, []);

  return (
    <View>
      <Text>Testing the production API</Text>
    </View>
  );
};

export default Prod;

问题: 在我的 Expo 项目中尝试使用 XMLHttpRequest 向生产后端 URL 发出 POST 请求时,我遇到了“网络错误”。该错误的描述性不强,我不确定请求失败的原因。

预期行为: 我希望代码能够成功连接到后端 URL 并收到有效的响应。后端托管在生产服务器上,当我通过浏览器访问它时,它可以正常工作。

JavaScript React-Native 博览会

评论


答:

0赞 Saviour Essien 7/20/2023 #1

我看到你正在使用 Fetch。你能用axios代替吗?此外,我看不到您的基本网址,因此我可以知道这是否是问题。

评论

0赞 Sushanth 7/20/2023
实际上,我也尝试过使用Axios,Xml和superagent方法,但似乎没有任何效果。相同的基本 url 在 postman 中也有效。我没有公开它,因为它是我们的公司 URL。