Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法以编程方式创建AZURE VM_Java_Windows_Azure - Fatal编程技术网

Java 无法以编程方式创建AZURE VM

Java 无法以编程方式创建AZURE VM,java,windows,azure,Java,Windows,Azure,我们正在尝试使用Azure公开的RESTAPI,通过Java中的HTTPClient创建一个虚拟机。我们正在使用下面的请求URL和XMLs,但是我们得到了“错误的请求”响应 {订阅id}/services/hostedservices/{existing hoster service name}/deployments <Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.o

我们正在尝试使用Azure公开的RESTAPI,通过Java中的HTTPClient创建一个虚拟机。我们正在使用下面的请求URL和XMLs,但是我们得到了“错误的请求”响应

{订阅id}/services/hostedservices/{existing hoster service name}/deployments

<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Name>TestVMAnandP</Name>
  <Label>bXl2bQ==</Label>
  <RoleList>
    <Role>
      <RoleName>TestVMAnandP</RoleName>
      <RoleType>PersistentVMRole</RoleType>
      <ConfigurationSets>
        <ConfigurationSet>
          <ConfigurationSetType>LinuxProvisioningConfiguration</ConfigurationSetType>
          <HostName>TestVMAnandP</HostName>
          <UserName>root</UserName>
          <UserPassword>test</UserPassword>
        </ConfigurationSet>
      </ConfigurationSets>
      <DataVirtualHardDisks>
        <DataVirtualHardDisk>
          <Lun>10</Lun>
          <LogicalDiskSizeInGB>50</LogicalDiskSizeInGB>
        </DataVirtualHardDisk>
      </DataVirtualHardDisks>
      <OSVirtualHardDisk>
        <SourceImageName>srini2-srini2-2012-08-23.vhd</SourceImageName>
        <MediaLink>http://sriniteststore.blob.core.windows.net/vhds/srini2-srini2-2012-08-23.vhd</MediaLink>
      </OSVirtualHardDisk>
      <RoleSize>ExtraSmall</RoleSize>
    </Role>
  </RoleList>
  <VirtualNetworkName>MyNetwork</VirtualNetworkName>
</Deployment>

TestVMAnandP
bXl2bQ==
TestVMAnandP
PersistentVMRole
LinuxProvisioningConfiguration
TestVMAnandP
根
测试
10
50
srini2-srini2-2012-08-23.vhd
http://sriniteststore.blob.core.windows.net/vhds/srini2-srini2-2012-08-23.vhd
超小型
我的网络
如果我们尝试在URL中提供一个与vm名称相同的服务名称,我们将得到404错误。我们尝试了web上给出的大多数示例,并替换了值,但所有示例都给出了400个错误。如果我们能得到一些帮助就太好了

错误:

我会遇到两种不同的错误:


错误1:当我在下面的URL.management.core.windows.net//services/hostedservices///deployments/-------------------------------------------------------------响应消息--->未找到---404中使用new时
java.io.FileNotFoundException:management.core.windows.net/84cc18f5-5bdd-4c95-9d69-862c12c53507/services/hostedservices/anand/deployments
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
原因:java.io.FileNotFoundException:management.core.windows.net/84cc18f5-5bdd-4c95-9d69-862c12c53507/services/hostedservices/anand/deployments
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知源)

错误2:当我使用以下URL management.core.windows.net//services/hostedservices//部署/
响应消息--->错误请求---400
java.io.IOException:服务器返回URL:management.core.windows.net/84cc18f5-5bdd-4c95-9d69-862c12c53507/services/hostedservices/azurecogservice/deployments的HTTP响应代码:400
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
原因:java.io.IOException:服务器返回了URL:management.core.windows.net/84cc18f5-5bdd-4c95-9d69-862c12c53507/services/hostedservices/azurecogservice/deployments的HTTP响应代码:400
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知源)
---------------------有效XML-------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Deployment xmlns="http://schemas.microsoft.com/windowsazure">
    <Name>190bed4a</Name>
    <DeploymentSlot>Production</DeploymentSlot>
    <Label>190bed4a</Label>
    <RoleList>
        <Role>
            <RoleName>SuseOpenVm_rolec8fc</RoleName>
            <RoleType>PersistentVMRole</RoleType>
            <ConfigurationSets>
                <ConfigurationSet>
                    <ConfigurationSetType>LinuxProvisioningConfiguration
                    </ConfigurationSetType>
                    <HostName>SuseOpenVm_rolec8fc</HostName>
                    <UserName>anandsrinivasan</UserName>
                    <UserPassword>Cloud360</UserPassword>
                    <DisableSshPasswordAuthentication>false</DisableSshPasswordAuthentication>
                </ConfigurationSet>
                <ConfigurationSet>
                    <ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
                    <DisableSshPasswordAuthentication>false</DisableSshPasswordAuthentication>
                    <InputEndpoints>
                        <InputEndpoint>
                            <LocalPort>22</LocalPort>
                            <Name>SSH</Name>
                            <Port>22</Port>
                            <Protocol>TCP</Protocol>
                        </InputEndpoint>
                    </InputEndpoints>
                </ConfigurationSet>
            </ConfigurationSets>
            <OSVirtualHardDisk>
                <MediaLink>https://portalvhdsvf842yxvkhbg4.blob.core.windows.net/vhds/190bed4a.vhd</MediaLink>
                <SourceImageName>SUSE__openSUSE-12-1-20120603-en-us-30GB.vhd</SourceImageName>
            </OSVirtualHardDisk>
            <RoleSize>Small</RoleSize>
        </Role>
    </RoleList>
    <VirtualNetworkName>anand360NW</VirtualNetworkName>
</Deployment>

1904a
生产
1904a
SUSEPOENVM_rolec8fc
PersistentVMRole
LinuxProvisioningConfiguration
SUSEPOENVM_rolec8fc
阿南斯里尼瓦桑
云端360
假的
网络配置
假的
22
SSH
22
传输控制协议
https://portalvhdsvf842yxvkhbg4.blob.core.windows.net/vhds/190bed4a.vhd
SUSE__openSUSE-12-1-20120603-en-us-30GB.vhd
小的
阿南德360NW

每当REST API出现问题时,我都会首先尝试通过门户完成我要做的事情。在您的例子中,我尝试使用用户名root和密码test创建一个Linux虚拟机(TestVMAnandP)。我立即注意到以下错误:

  • 不允许使用用户名“root”
  • 密码应至少为8个字符
  • 密码应包含以下3项:
    • 小写字符
    • 大写字符
    • 特殊人物

    • 错误代码400/4xx表示请求有问题。错误代码404明确表示“服务器没有找到任何与给定URI匹配的内容”。因此,您能否验证OSVertualHardDisck中提供的信息是否正确

      <OSVirtualHardDisk>
              <SourceImageName>srini2-srini2-2012-08-23.vhd</SourceImageName>
              <MediaLink>http://sriniteststore.blob.core.windows.net/vhds/srini2-srini2-2012-08-23.vhd</MediaLink>
            </OSVirtualHardDisk>
      
      
      srini2-srini2-2012-08-23.vhd
      http://sriniteststore.blob.core.windows.net/vhds/srini2-srini2-2012-08-23.vhd
      
      更新

      是您正在尝试使用的服务吗

      您可以在这里看到错误代码的解释


      您正在使用的目标url可能是无效的,或者是服务器所期望的。

      服务管理API文档严重混乱。如果你是受害者,我不会感到惊讶。您可以尝试的一件事是更改

      <LogicalDiskSizeInGB>50</LogicalDiskSizeInGB>
      
      50
      
      元素到

      <LogicalSizeInGB>50</LogicalSizeInGB>
      
      50
      
      在DataVirtualHardDisk元素下

      我建议这样做的原因是,如果您查看Get Data Disk的文档(http://msdn.microsoft.com/en-us/library/windowsazure/jj157180.aspx),它提到您将LogicalDiskSizeInGB作为响应元素之一,但是当您执行此函数时,返回的元素是LogicalSizeInGB

      这又是一种预感。试试看

      更新


      您可能要做的另一件事是解析您得到的异常以获得更多详细信息。在.Net中,我们遇到了一个WebException(很抱歉,很长时间没有在Java中工作),所以我通常会读取该异常的响应,然后返回一个包含更多细节的XML。

      我一直在处理同一个问题
      <LogicalDiskSizeInGB>50</LogicalDiskSizeInGB>
      
      <LogicalSizeInGB>50</LogicalSizeInGB>