2017-10-03 11 views
0

1)次のコードはIOSでエラーが発生しましたが、Androidで動作します。 IOSでIOS Reactネイティブfetch()POST:ネットワーク要求が失敗しました

2)私は、「取得」をフェッチすることはできますが、「ポスト」

を失敗したので、これは、iOS上では動作しません:私は上のInfo.plistを修正しようと

var data = new FormData(); 
    data.append("fileUpload", { uri: imageUri, name: filename, type: "image/jpeg" }); 
    data.append("filename", filename); 
    data.append("name", "uploadedFile"); 
    const config = { 
     method: "POST", 
     headers: { 
      Accept: "application/json", 
      "Content-Type": "multipart/form-data;" 
     }, 
     body: data 
    }; 

    return fetch(url, config).then((response) => response.json()) 
     .then(res => { return res ;}) 
     .catch(error => { 
      console.error(error); 
      return { name: "network error", description: "" }; 
     }); 

他のポスト(のようなReact Native fetch() Network Request Failed)まだそこに私はXcodeの、きれいなプロジェクトを再起動し、すべてを構築しよう

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
    <plist version="1.0"> 
    <dict> 
     <key>CFBundleDevelopmentRegion</key> 
     <string>en</string> 
     <key>CFBundleDisplayName</key> 
     <string>myapp</string> 
     <key>CFBundleExecutable</key> 
     <string>$(EXECUTABLE_NAME)</string> 
     <key>CFBundleIdentifier</key> 
     <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> 
     <key>CFBundleInfoDictionaryVersion</key> 
     <string>6.0</string> 
     <key>CFBundleName</key> 
     <string>$(PRODUCT_NAME)</string> 
     <key>CFBundlePackageType</key> 
     <string>APPL</string> 
     <key>CFBundleShortVersionString</key> 
     <string>1.0</string> 
     <key>CFBundleSignature</key> 
     <string>????</string> 
     <key>CFBundleVersion</key> 
     <string>1</string> 
     <key>LSRequiresIPhoneOS</key> 
     <true/> 
     <key>NSAppTransportSecurity</key>     // i add this 
     <dict>            // i add this 
      <key>NSAllowsArbitraryLoads</key>    // i add this 
      <true/>           // i add this 
      <key>NSAllowsArbitraryLoadsInWebContent</key> // i add this 
      <true/>           // i add this 
     </dict>            // i add this 
     <key>NSCameraUsageDescription</key> 
     <string>Your message to user when the camera is accessed for the first time</string> 
     <key>NSLocationWhenInUseUsageDescription</key> 
     <string></string> 
     <key>NSMicrophoneUsageDescription</key> 
     <string>Your message to user when the microsphone is accessed for the first time</string> 
     <key>NSPhotoLibraryUsageDescription</key> 
     <string>Your message to user when the photo library is accessed for the first time</string> 
     <key>UIAppFonts</key> 
     <array> 
      <string>Zocial.ttf</string> 
      <string>Feather.ttf</string> 
     </array> 
     <key>UILaunchStoryboardName</key> 
     <string>LaunchScreen</string> 
     <key>UIRequiredDeviceCapabilities</key> 
     <array> 
      <string>armv7</string> 
     </array> 
     <key>UISupportedInterfaceOrientations</key> 
     <array/> 
     <key>UIViewControllerBasedStatusBarAppearance</key> 
     <false/> 
     <key>LSApplicationCategoryType</key> 
     <string></string> 
    </dict> 
    </plist> 

誤差に応じIOS。

アドバイスはありますか?ありがとう

+0

あなたはInfo.plistの中であなたのドメインを追加しましたか? – Raymond

答えて

1

iOSは安全でないHTTPリクエストを許可していません。これを行うには、info.plistの中にドメインを例外として追加する必要があります。

は、以下を追加します。

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
    <key>yourserver.com</key> 
    <dict> 
     <!--Include to allow subdomains--> 
     <key>NSIncludesSubdomains</key> 
     <true/> 
     <!--Include to allow HTTP requests--> 
     <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
     <true/> 
     <!--Include to specify minimum TLS version--> 
     <key>NSTemporaryExceptionMinimumTLSVersion</key> 
     <string>TLSv1.1</string> 
    </dict> 
    </dict> 
</dict> 
+0

私は複数のサーバー例外を置くことができます。私はまだ他のAPIでこのエラーがありますか?私は2つのapis異なるドメインでホストされて使用します。 NSAppTransportSecurity NSExceptionDomains domaine1.org NSIncludesSubdomains NSTemporaryExceptionAllowsInsecureHTTPLoads NSTemporaryExceptionMinimumTLSVersion TLSv1.1 domaine2.orgドメーヌ1同じから30分前AlainIb – AlainIb

+0

はい、できます。あなたのドメインを3番目の ''の下に追加することができます。 ' yourserver1.com [....] yourserver2.com [...] ' – Raymond

関連する問題